16进制 到 二进制 算法问题
问题如下:X坐标:0x4D5 (不超过 111111111111) Y坐标:0xF44(不超过 111111111111) ,我组成一个字符串 4D5F44 ,这个字符串是 6个字节。想变成三个字节传送,然后再还原为原来坐标。
思路是 4D转为ASCII ,44转为ASCII 5F 转为ASCII ,就变成三个字符了,然后再将这三个字符还原为坐标。
怎么实现,最好把代码贴上,谢谢
--------------------编程问答-------------------- LZ:建议转换为3个Byte字节来完成. --------------------编程问答--------------------
Option Explicit--------------------编程问答-------------------- 支持ls的方法,lz的想法不可行。
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
标准ASCII码为0~127,高位为0。128x128x128无法容纳16x16x16x16x16x16的数据。 --------------------编程问答-------------------- 老朱辛苦了,替LZ谢谢您
--------------------编程问答-------------------- 二进制:111111111111=十六进制:FFF
可以使用两个字节来表示:0F FF
X坐标:0x4D5 就可以解析成:04 D5
Y坐标:0xF44 就可以解析成:0F 44
组合起来就是:04D50F44
补充:VB , 基础类