VB中十六进制数值转换成同内容字符串????

[复制链接]
查看11 | 回复6 | 2021-1-27 06:07:44 | 显示全部楼层 |阅读模式
byte(16)型的数组里的数值为485702(字符的ASCII码)
想将其变成十六进制数值,303902(十六进制的ASCII码)
并转换成字符串形式“303902”,请问怎么转???
尝试过用
将十进制数转成十六进制数用的是Hex(十进制数值)函数,已经成功转换。
但是十六进制转字符串的时候用StrConv()函数出来的值却有乱码。
比如将30转成字符串后出来的值是.3。
请问该怎么转?造成出现乱码的原因是什么?
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:07:44 | 显示全部楼层
SubMain()
DimarrAsByte()={48,57,2}
DimstrAscii=NewString(arr.Select(Function(x)CChar(Chr(x))).ToArray())
DimstrHex=String.Join("",arr.Select(Function(x)Hex(x).PadLeft(2,"0")))
Console.WriteLine(strAscii)
Console.WriteLine(strHex)
EndSub
09
303902
Pressanykeytocontinue...
回复

使用道具 举报

千问 | 2021-1-27 06:07:44 | 显示全部楼层
注意,02这个ASCII代码表示一个非打印字符。
回复

使用道具 举报

千问 | 2021-1-27 06:07:44 | 显示全部楼层
引用1楼caozhy的回复:VisualBasiccode
?

1234567
SubMain()DimarrAsByte()={48,57,2}DimstrAscii=NewString(arr.Select(Function(x)CChar(Chr(x))).ToArray())DimstrHex=St……

不行啊编译就过不了啊
回复

使用道具 举报

千问 | 2021-1-27 06:07:44 | 显示全部楼层
引用3楼mars617367397的回复:引用1楼caozhy的回复:
VisualBasiccode
?

1234567
SubMain()DimarrAsByte()={48,57,2}DimstrAscii=NewString(arr.Select(Function(x)CChar(Chr(x))).ToArray())……

需要VS2010或2012。我在2010下测试通过。
回复

使用道具 举报

千问 | 2021-1-27 06:07:44 | 显示全部楼层
byte(16)型的数组里的数值为485702(字符的ASCII码)
想将其变成十六进制数值,303902(十六进制的ASCII码)
并转换成字符串形式“303902”,请问怎么转???
-----------------------------------------
嘿嘿,正好我有个项目也用到了。给你看看。
DimbyteToReadAsInt16=SerialPort2.BytesToRead
Dimch(byteToRead)AsByte
DimbytesReadAsInt16=0
bytesRead=SerialPort2.Read(ch,0,byteToRead)
Dimindata,indatacutAsString
ForiAsInt16=0TobytesRead-1
indata=indata&DecToHex(ch(i))
Next

PublicFunctionDecToHex(ByValDecNumberAsByte)AsString
IfDecNumber
Dimstr=BitConverter.ToString(buff).Replace("-","")

回复

使用道具 举报

千问 | 2021-1-27 06:07:44 | 显示全部楼层
引用楼主mars617367397的回复:byte(16)型的数组里的数值为485702(字符的ASCII码)
想将其变成十六进制数值,303902(十六进制的ASCII码)
并转换成字符串形式“303902”,请问怎么转???
尝试过用
将十进制数转成十六进制数用的是Hex(十进制数值)函数,已经成功转换。
但是十六进制转字符串的时候用StrConv()函数出来的值却有乱码。
比如将30转成字符串后出来的值是.3。
请问该怎么转?造成出现乱码的原因是什么?

楼主,当你把十进制数用Hex()函数转换后,它就是字符串了,你判断字符串的长度为1时,前面补'0'就是了。
最后用“&”把它们连接在一起就OK了,连接补上空格就是第一种:303902;连接去掉了空格就是第二种:303902
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行