我一直在寻找在Dart编程语言中将十进制数字转换为十六进制格式的方法。
例如,HexCodec
类中的hex.encode
方法无法将十进制数字1111(其十六进制值为457)转换,并且会抛出异常:
FormatException: Invalid byte 0x457. (at offset 0)
如何将十进制数转换为十六进制?
我一直在寻找在Dart编程语言中将十进制数字转换为十六进制格式的方法。
例如,HexCodec
类中的hex.encode
方法无法将十进制数字1111(其十六进制值为457)转换,并且会抛出异常:
FormatException: Invalid byte 0x457. (at offset 0)
如何将十进制数转换为十六进制?
int.toRadixString(16)
做那个。
另请参阅https://groups.google.com/a/dartlang.org/forum/m/#!topic/misc/ljkYEzveYWk
这里是一个更详细的示例:
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
int.toRadixString(16).padLeft(4, '0')
来确保(至少)四个数字。 - lrn