[VB.Net]Ascii、十六進制互轉函式

Ascii與十六進制互轉函式
參考網址:http://www.dotblogs.com.tw/larrynung/archive/2010/01/06/12874.aspx


ASCII要轉Hex,可透過ToString函式帶入"X2",或是用Hex函式。因此ASCII String轉Hex String可寫成:
Public Function AsciiStringToHexString(ByVal asciiString As String) As String
     Dim ascii() As Byte = System.Text.Encoding.Default.GetBytes(asciiString)  '註1
     Dim count As Integer = ascii.Length
     Dim hexArray(count - 1) As String
     For idx As Integer = 0 To count - 1
         hexArray(idx) = ascii(idx).ToString("x2")
     Next
     Return String.Join(" ", hexArray)
End Function

註1:ASCII編碼部分要注意,這一段的程式使用的編碼方式僅能解00H~7FH,也就是十進位的0~127。在通訊傳輸的部分會造成溢位問題。



而Hex要轉ASCII,可在前面帶入"&h"字串,轉成int後再轉為char。因此Hex String轉ASCII String可寫成:
Public Function HexStringToAsciiString(ByVal hexString As String) As String
     Dim array() As String = hexString.Split(New Char() {" "c}, StringSplitOptions.RemoveEmptyEntries)
     For idx As Integer = 0 To array.Length - 1
         array(idx) = Chr(CInt(String.Format("&h{0}", array(idx))))
     Next
     Return String.Join(String.Empty, array)
 End Function


留言

這個網誌中的熱門文章

[Excel]將圖片放置於儲存格中

[軟體]AUTOCAD關於開啟圖面時,字型找不到,而要手動指定成 chineset.shx 字型檔問題

[MS SQL]查詢資料庫中每個資料表之列數與資料表大小(容量)資訊。Get size of all tables in database