注册 登录
编程论坛 VB6论坛

请问这个怎么解码?

初始元灵 发布于 2016-10-24 15:57, 1907 次点击

我从下位机读取上来的字符串是"01460 0025 C4";

0025就是我要的数据,十六进制数,但是这个怎么解啊??

我之前收到的都是八位的例如"3FC0B4C8"我写了个函数解析出来是1.505正确的

但是四位的这个我写的函数解不出来,修改也不行,可能是我方法不对,这个值地址没错的话应该是秒数,是个integer

求大神相助,我不知道怎么算。。。
8 回复
#2
xiangyue05102016-10-24 16:03
11个数…… 这个真不明白了。没搞过这种东西,不敢瞎说。帮顶了
#3
初始元灵2016-10-24 16:05
我自己弄出来了,好像就是转化成10进制就可以了。数值对的上,感觉就是对的。。。
#4
风吹过b2016-10-24 16:38
你前面的贴子里,最后回贴里,复制转 浮点数,里面带了转十进制的方法。
#5
初始元灵2016-10-24 16:55
解析出来啦哈哈哈哈哈哈哈哈哈哈哈哈哈哈其实很简单,想难了,用得到给大家做个参考。
这个特别针对的是21位的字符串,第七位到十九位是有用字符需要解析,四位四位算。
测试函数再此:
程序代码:
Public Function Analysis_Time(BString As String)

    Dim Ttimes As Integer
    Dim Ttimem As Integer
    Dim Ttimeh As Integer
    Dim a(1 To 3) As String
    Dim b(1 To 4) As String
    Dim i As Integer
    Dim j As Integer
   
    For i = 0 To 2
        a(i + 1) = "&H" & Mid(BString, 7 + i * 4, 4)
    Next i
   
    For i = 1 To 4
        b(i) = Mid(a(1), i + 2, 1)
    Next
    Ttimes = 16 ^ 3 * Val("&H" & b(1)) + 16 ^ 2 * Val("&H" & b(2)) + 16 ^ 1 * Val("&H" & b(3)) + Val("&H" & b(4))
    Debug.Print Ttimes
    For i = 1 To 4
        b(i) = Mid(a(2), i + 2, 1)
    Next
    Ttimem = 16 ^ 3 * Val("&H" & b(1)) + 16 ^ 2 * Val("&H" & b(2)) + 16 ^ 1 * Val("&H" & b(3)) + Val("&H" & b(4))
    Debug.Print Ttimem
    For i = 1 To 4
        b(i) = Mid(a(3), i + 2, 1)
    Next
    Ttimeh = 16 ^ 3 * Val("&H" & b(1)) + 16 ^ 2 * Val("&H" & b(2)) + 16 ^ 1 * Val("&H" & b(3)) + Val("&H" & b(4))
    Debug.Print Ttimeh
    Text4.Text = Ttimeh & ":" & Ttimem & ":" & Ttimes
   
End Function

好爽
#6
初始元灵2016-10-24 17:00
回复 4楼 风吹过b
不好意思版主大大,没看到。。。
#7
xzlxzlxzl2016-10-24 18:52
#8
风吹过b2016-10-24 20:02
十六进制,转整数,根据位数不同,可以直接转 BYTE(二位十六进制数),Integer(四位十六进制数),Long (八位十六进制数)
不需要这个一个字节一个字节的再去计算。
#9
xss_wl2016-10-24 22:12
恭喜楼主,贺喜楼主。结贴吧
1