1

.net アプリで VB6 コードを使用しようとしています。使用できなくなった関数 AscB を使用します。.net で何を使用する必要がありますか?

関数の使用方法の抜粋 (末尾から 3 行目の関数)...

' 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

ありがとう

4

3 に答える 3

3

AscB 関数は、8 バイト文字列のみに関係します。ただし、(おそらく) 独自の関数を作成することで回避できます。

Public Function AscB (value as Char) as Byte
    return System.Convert.ToByte(value)
End Function
于 2012-04-20T15:06:37.107 に答える
3

MSDN ライブラリから:

AscB関数は、文字列に含まれるバイト データで使用されます

最初の文字の文字コードを返す代わりに、AscBは最初のバイトを返します。

したがって、次のように動作するはずです。

Encoding.ASCII.GetBytes(value).First

値はChar

于 2012-04-20T15:52:55.813 に答える
0

Gent さん、返信ありがとうございます... 私が持っていたコードは、VB6 で書かれた MD5 暗号化クラスの一部でした。週末に、私が知らなかった .net クラスに出くわしました... System.Security.Cryptography は、100 行以上の VB6 コードではなく、5 行のコードで必要な暗号化を提供してくれました。あなたの努力に感謝します。

ところで、あなたの答えは両方ともうまくいきました。VB6コードをもう少し微調整する必要がありましたが。

于 2012-04-23T09:49:18.167 に答える