我想将字符串“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”))。
答案 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