[VB.Net]Chr & ChrW 和 Asc & AscW

今天的卡關~~~卡一個早上,暈倒
今天在寫Checksum這個簡單的鬼程式,居然一直卡關。後來原來是因為詭異的問題(原來我好嫩)


先來講解一下Chr 和 Asc:
Chr是一個字元轉換的指令chr(65)='A'  也就是65(10進制)的ASCII碼A
Asc呢就剛好相反,會將ASCII碼轉為十進制數值

Chr 的有效範圍是 0 到 255
ChrW 的有效範圍是 -32768 到 65535。
(參考網址:http://msdn.microsoft.com/zh-tw/library/613dxh46%28v=VS.80%29.aspx)

Asc 會傳回輸入字元的「字碼指標」(Code Point) 或字元碼。這可以是值從 0 到 255 的單一位元組字元集 (Single-Byte Character Set,SBCS),和值從 -32768 到 32767 的雙位元組字元集 (DBCS)。 http://msdn.microsoft.com/zh-tw/library/zew1e4wc%28v=vs.90%29.aspx

所以你用了Chrw去轉換,就要用AscW把他轉回來.....真的是~~~

checksum程式
'&H3表示&H後面的數字是代表十六進制
CheckSum(ChrW(&H0) + ChrW(&H0) + ChrW(&H3) + ChrW(&HE8))    '呼叫計算checksum


 '**************************************************************
  '以下的函式用來計算CheckSum結果
  '**************************************************************
  Function CheckSum(ByVal InputStr As String) As String
    Dim StrLen As Integer, a As Integer, j As Integer
    Dim StrCh As String, Sum As String
    StrLen = InputStr.Length
    a = 0
    For j = 1 To StrLen
      StrCh = Mid(InputStr, j, 1)
      a = AscW(StrCh) + a
    Next j
    Sum = Hex(a)
    If Sum.Length = 1 Then Sum = "0" + Sum
    CheckSum = Sum.Substring(Sum.Length - 2, 2) '取得最右邊的二個字元
  End Function


留言

張貼留言

這個網誌中的熱門文章

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

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

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