当前位置:编程学习 > VB >>

求助 vb中将字符串转换为十六进制,然后高位在前

--------------------编程问答-------------------- --------------------编程问答-------------------- 用Asc函数即可得到字符的ASCII编码 --------------------编程问答-------------------- 循环读取
Private Sub Command1_Click()
Dim hexStr As String
Dim convertStr As String '要转换的字串
For i = 67 To 1 Step -2
hexStr = hexStr & convertDword(Mid(convertStr, i, 2)) & Space(1)
 
Next
End Sub

private Function convertDword(ToHexstr As String) As String
convertDword = IIf(Len(Hex(ToHexstr)) < 2, "0" & Hex(ToHexstr), Hex(ToHexstr))
End Function
--------------------编程问答-------------------- 顶,问题没解决
--------------------编程问答-------------------- 转换前的字符串是“68000000”,如何得到“00 44 30 30 30 30 30 30”

你确定这个是对应的吗?这个字串的转换规则应该不是简单的十六进制转换吧 --------------------编程问答--------------------
引用 5 楼 simon__sun 的回复:
转换前的字符串是“68000000”,如何得到“00 44 30 30 30 30 30 30”

你确定这个是对应的吗?这个字串的转换规则应该不是简单的十六进制转换吧

感觉楼主的转换都错误了
楼主的思想是:将每一个字符都转换为ASC编码,但似乎楼主搞错了,6的ASC码不是:00
strP="68000000"
strO=""
For intP=1 To Len(strP)
    strO=strO & Format(Hex$(Mid(strP,intP,1)),"00")
Next intP --------------------编程问答-------------------- 问题不知道这其实我是要截取一段报文的长度,然后将这个长度转化为16进制的,比如说一段报文的长度是68,然后在这个68后面补“000000” 68的十六进制是44,实际是这个44是十进制转化为16进制的来的,高位在前,就是00 44喽 --------------------编程问答-------------------- 那就是我上面给你那个代码就可以实现啊, --------------------编程问答--------------------
引用 8 楼 simon__sun 的回复:
那就是我上面给你那个代码就可以实现啊,


但是调用的时候出现数据类型不匹配 --------------------编程问答-------------------- 你的数据长度固定68吗?不够的话你要补0的 --------------------编程问答-------------------- 问题解决了,不过我将“68000000”转换的结果是00 00 00 44 这个怎么解释  --------------------编程问答-------------------- '下面这个加了补零操作,如果<68的话
Private Sub Command1_Click()
Dim hexStr As String
Dim convertStr As String '要转换的字串
 
If Len(convertStr) < 68 Then convertStr = convertStr & String(68 - Len(convertStr), "0")
For i = 67 To 1 Step -2
hexStr = hexStr & convertDword(Mid(convertStr, i, 2)) & Space(1)
Debug.Print hexStr
Next
End Sub
--------------------编程问答-------------------- 我想要的结果是将68000000 转化成为00 44 30 30 30 30 30 30 --------------------编程问答--------------------
引用 13 楼 akae_mbed 的回复:
我想要的结果是将68000000 转化成为00 44 30 30 30 30 30 30


①你的 68 似乎是十进制的,凭什么直接在后面添加 6 个 0 ?
②十进制 68 的十六进制是:00000044 ,跟 00 44 30 30 30 30 30 30 是如何扯上关系的?
--------------------编程问答--------------------
引用 5 楼 simon__sun 的回复:
转换前的字符串是“68000000”,如何得到“00 44 30 30 30 30 30 30”

你确定这个是对应的吗?这个字串的转换规则应该不是简单的十六进制转换吧

你68转成十六进制44了,那肯定是要2字符代表一个十进制数值啊
你那个到底是咋对应的 一个0代表一个30??? --------------------编程问答--------------------
引用 15 楼 simon__sun 的回复:
引用 5 楼 simon__sun 的回复:
转换前的字符串是“68000000”,如何得到“00 44 30 30 30 30 30 30”

你确定这个是对应的吗?这个字串的转换规则应该不是简单的十六进制转换吧

你68转成十六进制44了,那肯定是要2字符代表一个十进制数值啊
你那个到底是咋对应的 一个0代表一个30???

他的字符串应该是前面的“68”代表后续字符个数,就是说后面总共有68个0。
然后要把68变成0044,后面的0都变成30
估计是这样,楼主确认一下吧 --------------------编程问答-------------------- 原来如此,一个一个的字,每个字是:00 00的,高位在前,你可以用Hex来将数据转换为十六进制啊,再将前面不足的补:0即可。

--------------------编程问答--------------------
引用 17 楼 veron_04 的回复:
原来如此,一个一个的字,每个字是:00 00的,高位在前,你可以用Hex来将数据转换为十六进制啊,再将前面不足的补:0即可。


未必是这样..........


提问的老是让别人来猜怎么解决,大家就慢慢猜吧...........
补充:VB ,  基础类
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,