下面代码就是将文本框中以一个空格隔开的十六进制转为字节的代码,文本框中数字格式为:01 02 03
成都创新互联专业为企业提供旌德网站建设、旌德做网站、旌德网站设计、旌德网站制作等企业网站建设、网页设计与制作、旌德企业网站模板建站服务,10余年旌德做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
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”转换为16进制数存为string型
用shuzi=Convert.ToInt32("12341168C5B7",16)
就ok了。
反之用 shuzi.ToString("X")就行了。
给分!!!
12341168C5B7转换成10进制数就是20014839678391。。
而int32的最大值为2,147,483,647。。所以产生错误。
所以要用int64,它的最大值为9,223,372,036,854,775,807。也就是16位十六进制数0X7FFFFFFFFFFFFFFF。
难道还有比F靠后的数??????
在内存中没有所谓得16进制或者其他进制,数就是数,什么进制是人自己理解的,而不是计算机。你所谓的16进制大概时你输入的字符序列,你自己需要把这个字符序列转换为数。
也许你要的是
Dim hex As Integer = H50 '这种定义
numHex =Integer.Parse(strHex, Globalization.NumberStyles.AllowHexSpecifier)
或
numHex = Integer. Parse("H" strHex)
串口通信最终都是用二进制传输的,你用代码把二进制转化成十六进制就可以了。不需要额外设置。