2012-04-20 174 views
1

我想在.net應用程序中使用一些VB6代碼。它使用一個不再可用的函數AscB。我需要在.net中使用什麼?在VB.net中VB6函數AscB等效

的函數如何被使用(在從端部第三行功能)提取物....

' Combine each block of 4 bytes (ascii code of character) into one long 
' value and store in the message. The high-order (most significant) bit of 
' each byte is listed first. However, the low-order (least significant) byte 
' is given first in each word. 
lBytePosition = 0 
lByteCount = 0 
Do Until lByteCount >= lMessageLength 
    ' Each word is 4 bytes 
    lWordCount = lByteCount \ BYTES_TO_A_WORD 

    ' The bytes are put in the word from the right most edge 
    lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE 
    lWordArray(lWordCount) = lWordArray(lWordCount) Or _ 
     LShift(AscB(Mid(sMessage, lByteCount + 1, 1)), lBytePosition) 
    lByteCount = lByteCount + 1 
Loop 

由於

+0

VB6代碼看起來很奇怪。我很驚訝它不是AscB(MidB而不是AscB(Mid。[文檔](http://msdn.microsoft.com/en-us/library/aa445073(v = vs.60).aspx))。 sMessage字符串是否包含?是否在中文或韓文這樣的雙字節代碼頁上運行? – MarkJ 2012-04-20 19:29:46

回答

0

根特,非常感謝您的回覆......我擁有的代碼是用VB6編寫的MD5加密類的一部分。在週末,我遇到了一個.net類,我不知道...... System.Security.Cryptography給了我5行代碼所需的加密,而不是100行VB6代碼。非常感謝您的努力。

順便說一句你的答案奏效。儘管我需要更多地調整VB6代碼。

+1

您應該標記給出的答案之一作爲答案,因爲此答案實際上不應答您發佈的問題。您的答案應添加到您現有問題的底部。 – 2013-09-09 16:10:53

3

的ASCB功能僅適用於8個字節串。但是,你可以(可能)通過編寫你自己的函數來解決它。

Public Function AscB (value as Char) as Byte 
    return System.Convert.ToByte(value) 
End Function 
+0

VB6 AscB返回的字節不是整數,所以你的函數不等於 – 2012-04-20 15:53:52

+0

你是對的,上面的代碼發生了變化 – APrough 2012-04-20 16:05:20

3

從MSDN庫:

ASCB函數與包含在字符串中的字節數據中。

代替返回字符代碼的第一個字符,ASCB返回的第一個字節

所以下面應該工作:

Encoding.ASCII.GetBytes(value).First 

如果值是Char

+0

這裏是一個鏈接到您引用的MSDN主題[Asc和AscB](http://msdn.microsoft.com/en-us/library/aa262678(v = vs.60).aspx),這是[Encoding.ASCII .GetBytes](http://msdn.microsoft.com/en-us/library/system.text.encoding.ascii.aspx) – MarkJ 2012-04-20 19:10:57