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的每一位對應結(jié)果的兩位,所以對于結(jié)果的操作位數(shù)要乘2
result[i2] = hexTable[index].codeUnitAt(0); //左邊的值取字符表,轉(zhuǎn)為Unicode放進resut數(shù)組
index = bit & 15; //取右邊四位
result[i2 + 1] = hexTable[index].codeUnitAt(0); //右邊的值取字符表,轉(zhuǎn)為Unicode放進resut數(shù)組
}
return String.fromCharCodes(result); //Unicode轉(zhuǎn)回為對應字符,生成字符串返回
}
}
關(guān)鍵字:Uint8List,轉(zhuǎn)16進制,Hex字符串