【发布时间】:2018-09-16 16:38:32
【问题描述】:
我一直在寻找一种在 Dart 编程语言中将十进制数转换为十六进制格式的方法。
例如,HexCodec 类中的hex.encode 方法无法转换十进制的 1111(其十六进制值为 457),而是给出了异常:
FormatException:无效字节 0x457。 (偏移量 0)
如何将十进制数转换为十六进制?
【问题讨论】:
标签: dart
我一直在寻找一种在 Dart 编程语言中将十进制数转换为十六进制格式的方法。
例如,HexCodec 类中的hex.encode 方法无法转换十进制的 1111(其十六进制值为 457),而是给出了异常:
FormatException:无效字节 0x457。 (偏移量 0)
如何将十进制数转换为十六进制?
【问题讨论】:
标签: dart
int.toRadixString(16)
这样做。
另见https://groups.google.com/a/dartlang.org/forum/m/#!topic/misc/ljkYEzveYWk
【讨论】:
int.toRadixString(16).padLeft(4, '0')来保证(至少)四位数。
这里有一个更完整的例子:
final myInteger = 2020;
final hexString = myInteger.toRadixString(16); // 7e4
基数仅表示基数,因此16 表示基数为 16。您可以使用相同的方法制作二进制字符串:
final binaryString = myInteger.toRadixString(2); // 11111100100
如果您希望十六进制字符串的长度始终为四个字符,那么您可以用零填充左侧:
final paddedString = hexString.padLeft(4, '0'); // 07e4
如果你更喜欢大写十六进制:
final uppercaseString = paddedString.toUpperCase(); // 07E4
还有一些其他有趣的事情:
print(0x7e4); // 2020
int myInt = int.parse('07e4', radix: 16);
print(myInt); // 2020
【讨论】: