ToString()函数在VB .NET中添加零?

时间:2017-05-11 08:10:16

标签: vb.net parsing biginteger

每当我使用BigInteger.ToString(“X”)方法将BigInteger值“转换”为HEX时,它会为某些不明原因添加额外的零(对我而言)。例如:

Dim val As New BigInteger
Dim res As New String

val = 604462909807314587353089

res = val.ToString("X")

在这种情况下,res等于:

res: 080000000000000000001

这第一个零是困扰,因为我将这些值传递给某些只允许一定数量的HEX字符的设备。我当然可以使用额外的一行或两行轻松删除它,但鉴于我的程序也是一个巨大的解析循环,我担心这样做会延长执行时间。

知道这是从哪里来的吗? 非常感谢你。 :)

1 个答案:

答案 0 :(得分:4)

前导0表示该数字为正数。在有符号整数中,最大位用作符号位,因此它表示负数。

例如:

// Sorry this is in C#
// 0x00 ~ 0x7F is always positive (0~127), no need to add leading 0
// 0x80 ~ 0xFF in signed number would be negative(-128~-1), but in unsigned it will be 128~255
new BigInteger(128).ToString("X") == "080"; // this is positive 128!
new BigInteger(-128).ToString("X") == "80"; // this is negative 128!

请注意,前导0帮助您确定实际的数字。

如果您知道要传递给其他设备的位数,那么我建议实际截断/格式化为特定的数字,例如:ToString(" X20")将始终格式化为20位数。 在您的计算中,前导0应该几乎不会影响任何一个,所以您不必担心它。