在VBScript中将两个字符的ASCII字符串转换为DOUBLE

时间:2013-02-12 22:31:12

标签: vbscript

我想将字符串“ME”转换为VBS中的double 25933 我正在尝试下面的方法,没有运气

value = AscB(ASCII("M")) *2^8
value = value + AscB(ASCII("E"))
value = CDbl(value)

此转换用于显示双字作为字符串的HMI显示。 25933给了我“我”。不要让我误导你,我不确定这是否应该是“双重”我只是试图从“ME”获得25933,就像在一个理想的世界(伪代码)Cdouble(CByte(“M”)+ CByte( “E”))。

1 个答案:

答案 0 :(得分:0)

如果我的逻辑正确,那么你的例子是不正确的。

Asc("M") = 77  = 0x4D
Asc("E") = 69  = 0x45
Asc("e") = 101 = 0x65

也就是说,“ME”的数字表示是17741(0x454D),而25933(0x654D)对应于“Me”。

至于你的代码,它使用高位字节的第一个字符和低位字节的第二个字符,但似乎反之亦然:

WScript.Echo Str2Num("Me") ' 25933
WScript.Echo Str2Num("ME") ' 17741

Function Str2Num(Str)
  ch1 = Left(Str, 1)
  ch2 = Mid(Str, 2, 1)
  Str2Num = CDbl(Asc(ch2) * 256  + Asc(ch1))
End Function
相关问题