1

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

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

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

4

1 回答 1

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
于 2013-02-13T09:49:29.610 回答