VBScript将整数转换为字符串(itoa)

时间:2014-04-28 00:23:14

标签: vbscript modulus itoa

我编写了一个取整数并将其转换为十进制,十六进制或二进制的方法,具体取决于您使用注释选择的内容。我将在以后建立一个选择。我遇到的问题是选择了错误的值,我认为它与模数运算符返回错误的值有关。它可能是一个舍入问题,因为我似乎总是偏离1位数,但不是字符串中的每个字符。任何帮助,将不胜感激。例如,现在设置给出小数值。因此,如果你运行它并输入1705,它应该返回1705,但它返回2705.十六进制和二进制不是更好。

Do While val >= 1    'finds the remainder and assigns it array

    r = val Mod base 
    buf(i) = arr(r)

    'Possible rounding issue:
    val = val / base     'need whole number division to find val. 

    i = i - 1 'decrement the buf array    

Loop

1 个答案:

答案 0 :(得分:1)

Mod()对整数值进行操作。如果您传递的值不是整数值,VBScript会将其四舍五入为最接近的整数。这就是1705的值所发生的情况。经过三次迭代后,你得到1.705,Mod()轮到2。

所以现在问题变成了,为什么你首先将浮点值传递给Mod()?原因是因为VBScript在以下语句中进行浮点除法:

val = val / base

由于您不关心余数(您已经捕获了它),因此该语句需要执行整数除法,而不是浮点除法。幸运的是,VBScript使整数除法变得容易。只需使用反斜杠而不是正斜杠:

val = val \ base