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

时间:2018-09-16 16:38:33

标签: dart

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

例如,HexCodec类中的hex.encode方法无法转换十进制1111(十六进制值为457),而是给出异常“ FormatException:无效字节0x457。(偏移量为0)”。

如果有人可以帮助我,那就太好了

谢谢

2 个答案:

答案 0 :(得分:6)

 int.toRadixString(16) 

做到了。

另请参阅https://groups.google.com/a/dartlang.org/forum/m/#!topic/misc/ljkYEzveYWk

答案 1 :(得分:2)

这是一个更完整的例子:

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