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

惹火的框架 2013-02-18 09:20:37
byte(16)型的数组里的数值为 48 57 02 (字符的ASCII码)
想将其变成十六进制数值, 30 39 02 (十六进制的ASCII码)
并转换成字符串形式“303902”,请问怎么转???

尝试过用
将十进制数转成十六进制数用的是Hex(十进制数值) 函数,已经成功转换。
但是十六进制转字符串的时候用StrConv()函数出来的值却有乱码。
比如将30转成字符串后出来的值是.3。
请问该怎么转?造成出现乱码的原因是什么?
...全文
1259 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 楼主 mars617367397 的回复:
byte(16)型的数组里的数值为 48 57 02 (字符的ASCII码) 想将其变成十六进制数值, 30 39 02 (十六进制的ASCII码) 并转换成字符串形式“303902”,请问怎么转??? 尝试过用 将十进制数转成十六进制数用的是Hex(十进制数值) 函数,已经成功转换。 但是十六进制转字符串的时候用StrConv()函数出来的值却有乱码。 比如将30转成字符串后出来的值是.3。 请问该怎么转?造成出现乱码的原因是什么?
楼主,当你把十进制数用Hex()函数转换后,它就是字符串了,你判断字符串的长度为1时,前面补'0'就是了。 最后用“&”把它们连接在一起就OK了,连接补上空格就是第一种:30 39 02;连接去掉了空格就是第二种:303902
vbfool 2014-05-05
  • 打赏
  • 举报
回复
如果你已经拿到了byte数组,可以这么干

Dim str = BitConverter.ToString(buff).Replace("-","")
dowinlee 2014-05-05
  • 打赏
  • 举报
回复
我的方法是: Format(iCheckSum Mod 256, "X").PadLeft(2, "0") 可以把任意整数化成2位的16进制字符串
threenewbee 2013-02-19
  • 打赏
  • 举报
回复
引用 3 楼 mars617367397 的回复:
引用 1 楼 caozhy 的回复: Visual Basic code ? 1234567 Sub Main() Dim arr As Byte() = {48, 57, 2} Dim strAscii = New String(arr.Select(Function(x) CChar(Chr(x))).ToArray()) ……
需要VS2010或2012。我在2010下测试通过。
青岛小帅锅 2013-02-19
  • 打赏
  • 举报
回复
byte(16)型的数组里的数值为 48 57 02 (字符的ASCII码) 想将其变成十六进制数值, 30 39 02 (十六进制的ASCII码) 并转换成字符串形式“303902”,请问怎么转??? ----------------------------------------- 嘿嘿,正好我有个项目也用到了。给你看看。 Dim byteToRead As Int16 = SerialPort2.BytesToRead Dim ch(byteToRead) As Byte Dim bytesRead As Int16 = 0 bytesRead = SerialPort2.Read(ch, 0, byteToRead) Dim indata, indatacut As String For i As Int16 = 0 To bytesRead - 1 indata = indata & DecToHex(ch(i)) Next Public Function DecToHex(ByVal DecNumber As Byte) As String If DecNumber <= 15 Then DecToHex = "0" & Hex(DecNumber) Else : DecToHex = Hex(DecNumber) End If End Function
惹火的框架 2013-02-19
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
Visual Basic code ? 1234567 Sub Main() Dim arr As Byte() = {48, 57, 2} Dim strAscii = New String(arr.Select(Function(x) CChar(Chr(x))).ToArray()) Dim strHex = St……
不行啊 编译就过不了啊
threenewbee 2013-02-18
  • 打赏
  • 举报
回复
注意,02这个ASCII代码表示一个非打印字符。
threenewbee 2013-02-18
  • 打赏
  • 举报
回复
    Sub Main()
        Dim arr As Byte() = {48, 57, 2}
        Dim strAscii = New String(arr.Select(Function(x) CChar(Chr(x))).ToArray())
        Dim strHex = String.Join(" ", arr.Select(Function(x) Hex(x).PadLeft(2, "0")))
        Console.WriteLine(strAscii)
        Console.WriteLine(strHex)
    End Sub
09 30 39 02 Press any key to continue . . .

16,722

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧