下面代碼就是將文本框中以一個(gè)空格隔開的十六進(jìn)制轉(zhuǎn)為字節(jié)的代碼,文本框中數(shù)字格式為:01 02 03
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供旌德網(wǎng)站建設(shè)、旌德做網(wǎng)站、旌德網(wǎng)站設(shè)計(jì)、旌德網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、旌德企業(yè)網(wǎng)站模板建站服務(wù),10余年旌德做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
Dim TestArray() As String = Split(TextBox1.Text)
Dim hexBytes() As Byte
ReDim hexBytes(TestArray.Length - 1)
Dim i As Integer
For i = 0 To TestArray.Length - 1
hexBytes(i) = Val("h" TestArray(i))
Next
SerialPort.Write(hexBytes, 0, hexBytes.Length)
把字符串“12341168C5B7”轉(zhuǎn)換為16進(jìn)制數(shù)存為string型
用shuzi=Convert.ToInt32("12341168C5B7",16)
就ok了。
反之用 shuzi.ToString("X")就行了。
給分!??!
12341168C5B7轉(zhuǎn)換成10進(jìn)制數(shù)就是20014839678391。。
而int32的最大值為2,147,483,647。。所以產(chǎn)生錯(cuò)誤。
所以要用int64,它的最大值為9,223,372,036,854,775,807。也就是16位十六進(jìn)制數(shù)0X7FFFFFFFFFFFFFFF。
難道還有比F靠后的數(shù)??????
在內(nèi)存中沒有所謂得16進(jìn)制或者其他進(jìn)制,數(shù)就是數(shù),什么進(jìn)制是人自己理解的,而不是計(jì)算機(jī)。你所謂的16進(jìn)制大概時(shí)你輸入的字符序列,你自己需要把這個(gè)字符序列轉(zhuǎn)換為數(shù)。
也許你要的是
Dim hex As Integer = H50 '這種定義
numHex =Integer.Parse(strHex, Globalization.NumberStyles.AllowHexSpecifier)
或
numHex = Integer. Parse("H" strHex)
串口通信最終都是用二進(jìn)制傳輸?shù)?,你用代碼把二進(jìn)制轉(zhuǎn)化成十六進(jìn)制就可以了。不需要額外設(shè)置。