关于vb unicode字符串与byte数组处理,各位大侠和路过的来急救啊搞了2天了,该如何处理
关于vb unicode字符串与byte数组处理,各位大侠和路过的来急救啊,搞了2天了
在下现在做串口通信,使用modbus协议
问题就是 vb的unicode带来的
byte的数组 中2个byte为数据位置,其实里面是4个byte的空间
data(0)=0
data(1)=1
实际表示的数值是 00 01
当我输入比较小的数值的时候,直接写入数组,可以使用这样的方法,
但是现在我需要写入比较大的数值,
例如,写入65514 16进制 位FF EA
想要得到的效果就是data(0)=FF data(1)=EA
Dim data1 As Long
data1 = 65514
Dim data2 As String
data2 = Hex(data1)
Dim data3() As Byte
data3 = data2
Text1.Text = UBound(data3) 显示为7个byte,里面的内容倒是正确的16进制
各位大侠来帮帮忙啊,在下初学vb,以前用C,还没碰到过unicode这回事
------解决方案--------------------
或者
Private Sub Form_Click()
Dim a(1) As Byte, b As Long
b = 65514
a(0) = "&H " & Left(Hex(b), 2)
a(1) = "&H " & Right(Hex(b), 2)
Debug.Print Hex(a(0)), Hex(a(1))
End Sub
------解决方案--------------------
小刀惋心很有意思啊!我是指:
a(0) = a(0) Xor a(1)
a(1) = a(0) Xor a(1)
a(0) = a(0) Xor a(1)
其实:
Private Declare Sub CopyMemory Lib "kernel32 " Alias "RtlMoveMemory " (Destination As Any, Source As Any, ByVal Length As Long)
Private Sub Form_Click()
Dim a(1) As Byte, b As Long
b = 65514
CopyMemory a(0), b, 2
Debug.Print Hex(a(1)), Hex(a(0))
End Sub
在下现在做串口通信,使用modbus协议
问题就是 vb的unicode带来的
byte的数组 中2个byte为数据位置,其实里面是4个byte的空间
data(0)=0
data(1)=1
实际表示的数值是 00 01
当我输入比较小的数值的时候,直接写入数组,可以使用这样的方法,
但是现在我需要写入比较大的数值,
例如,写入65514 16进制 位FF EA
想要得到的效果就是data(0)=FF data(1)=EA
Dim data1 As Long
data1 = 65514
Dim data2 As String
data2 = Hex(data1)
Dim data3() As Byte
data3 = data2
Text1.Text = UBound(data3) 显示为7个byte,里面的内容倒是正确的16进制
各位大侠来帮帮忙啊,在下初学vb,以前用C,还没碰到过unicode这回事
------解决方案--------------------
或者
Private Sub Form_Click()
Dim a(1) As Byte, b As Long
b = 65514
a(0) = "&H " & Left(Hex(b), 2)
a(1) = "&H " & Right(Hex(b), 2)
Debug.Print Hex(a(0)), Hex(a(1))
End Sub
------解决方案--------------------
小刀惋心很有意思啊!我是指:
a(0) = a(0) Xor a(1)
a(1) = a(0) Xor a(1)
a(0) = a(0) Xor a(1)
其实:
Private Declare Sub CopyMemory Lib "kernel32 " Alias "RtlMoveMemory " (Destination As Any, Source As Any, ByVal Length As Long)
Private Sub Form_Click()
Dim a(1) As Byte, b As Long
b = 65514
CopyMemory a(0), b, 2
Debug.Print Hex(a(1)), Hex(a(0))
End Sub