Dart/Flutter语言 - 十六进制转换?



我想将'Hello👋'转换为十六进制

codeUnits是:

[72, 101, 108, 108, 111, 55357, 56395]

我想获得:48656c6c6ff09f918b

请问怎么做?我使用了一些lib 'Pinenacl', '十六进制',但我获得了一个错误的十六进制:48656c6c6f3d4b

您的结果是用UTF-8而不是UTF-16编码的(您的代码单元是UTF-16)。因此,您需要首先将String编码为UTF-8数据,然后将其转换为十六进制:

import 'dart:convert';
void main() {
String string = String.fromCharCodes([72, 101, 108, 108, 111, 55357, 56395]);
print(string); // Hello👋
print(utf8.encode(string).map((e) => e.toRadixString(16)).join()); // 48656c6c6ff09f918b
}

可以使用十六进制

List<int> list = utf8.encode("Hello👋");
String hex = HEX.encode(list);
print(hex);

结果

48656c6c6ff09f918b

相关内容

  • 没有找到相关文章

最新更新