Dart:将十进制转换为十六进制

30

我一直在寻找在Dart编程语言中将十进制数字转换为十六进制格式的方法。

例如,HexCodec类中的hex.encode方法无法将十进制数字1111(其十六进制值为457)转换,并且会抛出异常:

FormatException: Invalid byte 0x457. (at offset 0)

如何将十进制数转换为十六进制?

2个回答

68

35
如果你想要一个固定宽度的十六进制字符串,你也可以使用 int.toRadixString(16).padLeft(4, '0') 来确保(至少)四个数字。 - lrn

22

这里是一个更详细的示例:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接