1

文字列「ME」をVBSでダブル25933に変換したい次のアプローチを試していますが運がありません

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

この変換は、ダブルワードを文字列として表示するHMIディスプレイ用です。25933は私に「私」を与えます。誤解しないでください。これが「ダブル」であるかどうかはわかりません。理想的な世界(擬似コード)Cdouble(CByte( "M")+のように、「ME」から25933を取得しようとしています。 CByte( "E"))。

4

1 に答える 1

0

ロジックが正しければ、あなたの例は正しくありません。

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

つまり、「ME」の数値表現は 17741 (0x454D) ですが、25933 (0x654D) は「Me」に対応します。

あなたのコードに関しては、最初の文字を上位バイトに、2 番目の文字を下位バイトに使用していますが、その逆のようです:

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 に答える