2013-02-12 56 views
1

爲DOUBLE我想字符串以「我」在VBS 雙25933我沒有運氣轉換兩個字符的ASCII字符串中的VBScript

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

這種轉換嘗試以下的形式給出了對一個HMI轉換將雙字顯示爲字符串的顯示。 25933給我「我」。不要讓我誤導你,我不知道這是否應該是一個「雙」我只是想從「我」得到25933,就像在一個理想的世界(僞代碼)Cdouble(CByte(「M」)+ CByte( 「E」))。

+1

'升序(「M」)' = 77 = 0x4D,'Asc(「E」)= 69 = 0x45,'Asc(「e」)= 101 = 0x65。 25933 = 0x654D,所以如果我的邏輯正確,它對應於「我」(小寫字母「e」),而「我」(全部大寫)對應於0x454D = 17741. – Helen 2013-02-13 06:02:14

+1

@海倫,很好的信息。似乎也存在排序問題。 「e」應該向左移動,而不是「M」。 – 2013-02-13 08:02:05

回答

0

如果我得到正確的邏輯,你的例子是不正確的。

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

即,數字表示 「ME」 是17741(0x454D),而25933(0x654D)對應於 「我」。

至於你的代碼,它使用的高字節和低字節第二個字的第一個字符,但現在看來,這應該是反過來的:

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 
+0

海倫,我認爲功能代碼有錯誤。最後一行應該是'Str2Num =',而不是'Str2Dbl ='。 – MBu 2013-02-13 12:47:38

+0

非常感謝Helen和MBu,它很有用! – aparlar 2013-02-13 22:13:54

+0

@MBu:非常感謝您的支持,並加以解決。 – Helen 2013-02-14 11:17:23