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

16进制 到 二进制 算法问题

问题如下:

X坐标:0x4D5 (不超过 111111111111)  Y坐标:0xF44(不超过 111111111111) ,我组成一个字符串 4D5F44 ,这个字符串是 6个字节。想变成三个字节传送,然后再还原为原来坐标。

思路是 4D转为ASCII ,44转为ASCII  5F 转为ASCII ,就变成三个字符了,然后再将这三个字符还原为坐标。

怎么实现,最好把代码贴上,谢谢
--------------------编程问答-------------------- LZ:建议转换为3个Byte字节来完成. --------------------编程问答--------------------
Option Explicit
    Dim bytSj(1 To 3) As Byte
    Dim sngSj(1 To 2) As Integer
    Dim i As Long
Private Sub Command1_Click() '转换为Byte字节流
    Dim strSj As String
    strSj = Hex(sngSj(1)) & Hex(sngSj(2))
    Debug.Print strSj
    For i = 1 To Len(strSj) Step 2
        bytSj((i + 1) / 2) = Val("&H" & Mid(strSj, i, 2))
    Next
    For i = LBound(bytSj) To UBound(bytSj)
        Debug.Print bytSj(i)
    Next
End Sub

Private Sub Command2_Click() '返回原坐标
    Dim strSj As String
    For i = 1 To 3
        strSj = strSj & Right("0" & Hex(bytSj(i)), 2)
    Next
    Debug.Print strSj
    sngSj(1) = Val("&H" & Mid(strSj, 1, 3))
    sngSj(2) = Val("&H" & Mid(strSj, 4, 3))
    Debug.Print sngSj(1)
    Debug.Print sngSj(2)
End Sub

Private Sub Form_Load()
    sngSj(1) = &H4D5
    sngSj(2) = &HF44
    Debug.Print sngSj(1)
    Debug.Print sngSj(2)
End Sub
--------------------编程问答-------------------- 支持ls的方法,lz的想法不可行。

标准ASCII码为0~127,高位为0。128x128x128无法容纳16x16x16x16x16x16的数据。 --------------------编程问答-------------------- 老朱辛苦了,替LZ谢谢您

引用 2 楼 zdingyun 的回复:
VB codeOptionExplicitDim bytSj(1To3)AsByteDim sngSj(1To2)AsIntegerDim iAsLongPrivateSub Command1_Click()'转换为Byte字节流Dim strSjAsString
    strSj= Hex(sngSj(1))& Hex(sngSj(2))
    Debug.Print strSjFor i=¡­
--------------------编程问答-------------------- 二进制:111111111111=十六进制:FFF
可以使用两个字节来表示:0F FF
X坐标:0x4D5 就可以解析成:04 D5
Y坐标:0xF44 就可以解析成:0F 44

组合起来就是:04D50F44
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,