0

fstream を使用して実行可能ファイルを書き込もうとしています。

Dim buffer As String
Dim c As Char = Chr(9)
Dim fs As System.IO.FileStream = New System.IO.FileStream("test.exe", IO.FileMode.OpenOrCreate)
Dim w As System.IO.BinaryWriter = New System.IO.BinaryWriter(fs)

w.Seek(0, System.IO.SeekOrigin.Begin)
w.Write(HEX VALUES HERE)

w.Close()
fs.Close()

16進数をASCIIに変換するために、次のようなことを試しました:

  MessageBox.Show(ChrW(Convert.ToInt32("48", 16)))
  MessageBox.Show(Chr(CInt("&H" & "48")))
  MessageBox.Show(Chr(CInt("&H48")))

ただし、これらの機能はそれぞれ 1 つの文字でのみ機能します。これらの関数を文字列全体で機能させるにはどうすればよいですか?

4

6 に答える 6

7

別の回答を投稿しています。以下のコードを使用して、機能を実装できます。

Dim st As String = "49204c6f76652050726f6772616d6d696e672e"
    Dim com As String
    For x = 0 To st.Length - 1 Step 2
        Dim k As String = st.Substring(x, 2)
        com &= System.Convert.ToChar(System.Convert.ToUInt32(k, 16)).ToString()
    Next

以下のコード関数を使用することもできます。

Dim st As String = "49204c6f76652050726f6772616d6d696e672e"
Dim com As String
For x = 0 To st.Length - 1 Step 2
    com &= ChrW(CInt("&H" & st.Substring(x, 2)))
Next
于 2012-12-25T13:34:02.597 に答える
4

これを使用して、16進文字列をASCIIに変換できます。

Dim hexValue = "48"
Dim ASCII_value = System.Convert.ToChar(System.Convert.ToUInt32(hexValue, 16))
于 2012-12-24T04:25:35.623 に答える
1
H を 16 進数に変換: debug.Print hex(asc("H")) >48 H を再度取得するために戻る: debug.Print chr(val("&H" & "48")) >H

簡単な例を挙げて詳細を送らせてください。あなたの答えは、16進数をASCIIに変換する方法であることを忘れないでください。そのためには、以下で説明する関数 hex_to_ascii を取得するだけです。

Sub test()
Dim str_word As Variant
str_word = "Hello Word"
Debug.Print "We've set=" & str_word

Dim hex_word As Variant
hex_word = str_to_hex(str_word)
Debug.Print "Just for convert to Hex format=" & hex_word
'48656C6C6F20576F7264

Dim ascii_word As Variant
ascii_word = hex_to_ascii(hex_word)
Debug.Print "Getting ASCII format from Hex=" & ascii_word
'072101108108111032087111114100

Dim hex_word_from_ascii As Variant
hex_word_from_ascii = ascii_to_hex(ascii_word)
Debug.Print "Finally converting Hex value to ascii=" & hex_word_from_ascii
'48656C6C6F20576F7264

Dim str_from_hex As Variant
str_from_hex = hex_to_str(hex_word_from_ascii)
Debug.Print "Remember=" & str_from_hex
'Hello Word
End Sub

Function str_to_hex(p_str As Variant) As Variant
Dim x As Long
Dim resp As Variant
Dim tmp As String
For x = 1 To Len(p_str)
  tmp = Mid$(p_str, x, 1)
  resp = resp & Hex(Asc(tmp))
Next
str_to_hex = resp
End Function

Function hex_to_str(p_hex As Variant) As Variant
Dim x As Long
Dim resp As Variant
Dim tmp As String
For x = 1 To Len(p_hex) Step 2
  tmp = Mid$(p_hex, x, 2)
  resp = resp & Chr(Val("&H" & tmp))
Next
hex_to_str = resp
End Function

Function hex_to_ascii(p_hex As Variant) As Variant
Dim x As Long
Dim resp As Variant
Dim tmp As String
For x = 1 To Len(p_hex) Step 2
  tmp = Mid$(p_hex, x, 2)
  resp = resp & Format(Val("&H" & tmp), "000")
Next
hex_to_ascii = resp
End Function

Function ascii_to_hex(p_ascii As Variant) As Variant
Dim x As Long
Dim resp As Variant
Dim tmp As String
For x = 1 To Len(p_ascii) Step 3
  tmp = Mid$(p_ascii, x, 3)
  resp = resp & Hex(tmp)
Next
ascii_to_hex = resp
End Function
于 2016-08-16T19:08:47.690 に答える
1

さまざまな Hex 関数を収集し、機能するまで変更しました。どうぞ:

http://pastebin.com/ewQh5iRa

于 2013-12-18T17:03:35.933 に答える
0

試行錯誤したコード

これをコピペして関数を作成

Function HexToString(ByVal hex As String) As String
    Dim text As New System.Text.StringBuilder(hex.Length \ 2)
    For i As Integer = 0 To hex.Length - 2 Step 2
        text.Append(Chr(Convert.ToByte(hex.Substring(i, 2), 16)))
    Next
    Return text.ToString
End Function

このように使用してください

Debug.WriteLine(HexToString("73696D306E"))

ソース

于 2016-02-19T08:54:46.327 に答える