【Dart/Flutter】Uint8List转Hex字符串,详
2021-11-15 本文已影响0人
坐了整个春夏秋冬
import 'dart:typed_data';
class HexUtils {
static String uint8ToHex(Uint8List byteArr) {
if (byteArr == null || byteArr.length == 0) {
return "";
}
Uint8List result = Uint8List(byteArr.length << 1);
var hexTable = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']; //16进制字符表
for (var i = 0; i < byteArr.length; i++) {
var bit = byteArr[i]; //取传入的byteArr的每一位
var index = bit >> 4 & 15; //右移4位,取剩下四位
var i2 = i << 1; //byteArr的每一位对应结果的两位,所以对于结果的操作位数要乘2
result[i2] = hexTable[index].codeUnitAt(0); //左边的值取字符表,转为Unicode放进resut数组
index = bit & 15; //取右边四位
result[i2 + 1] = hexTable[index].codeUnitAt(0); //右边的值取字符表,转为Unicode放进resut数组
}
return String.fromCharCodes(result); //Unicode转回为对应字符,生成字符串返回
}
}
关键字:Uint8List,转16进制,Hex字符串