[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程式
今天在寫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
網誌管理員已經移除這則留言。
回覆刪除