假设一个SERVER.EXE工作在UNICODE的语言下。比如英语.
CLIENT向SERVER发一个字符"1"
server hex后接受到的是31 1个字符
但是server.exe工作在中文下接受到的就是 33 31
2个字符.有没有办法让server.exe 工作在中文并且接收到正确的数据?或者是我的hextostr有问题.
我贴出来。大家帮我出出注意
Public Function Hex2Chr(ByVal HexStr As String)
Dim sArr() As String
Dim sArr2() As String
Dim i As Long
Dim X As Long
Dim cal1 As String
Dim cal2 As String
sArr() = Split(LTrim(HexStr), " ")
For i = 0 To UBound(sArr())
cal1 = cal1 & " " & HexToDec(sArr(i))
Next isArr2() = Split(LTrim(cal1), " ")
For X = 0 To UBound(sArr2())
cal2 = cal2 & ChrW(sArr2(X))
Next X
Hex2Chr = cal2
End Function
Public Function Chr2Hex(ByVal chr As String) As Variant
Dim i As Integer
Dim b As Integer
Dim c As Integer
Dim varR As String
Dim d As Variant
Do Until i = Len(chr)
c = i + 1
b = i - 2
If b <= 0 Then b = 1
d = hex$(AscW(Mid(chr, c, 1)))
If Len(d) = 1 Then d = "0" & dvarR = varR & " " & d
i = i + 1
Loop
Chr2Hex = LTrim(varR)
End Function
CLIENT向SERVER发一个字符"1"
server hex后接受到的是31 1个字符
但是server.exe工作在中文下接受到的就是 33 31
2个字符.有没有办法让server.exe 工作在中文并且接收到正确的数据?或者是我的hextostr有问题.
我贴出来。大家帮我出出注意
Public Function Hex2Chr(ByVal HexStr As String)
Dim sArr() As String
Dim sArr2() As String
Dim i As Long
Dim X As Long
Dim cal1 As String
Dim cal2 As String
sArr() = Split(LTrim(HexStr), " ")
For i = 0 To UBound(sArr())
cal1 = cal1 & " " & HexToDec(sArr(i))
Next isArr2() = Split(LTrim(cal1), " ")
For X = 0 To UBound(sArr2())
cal2 = cal2 & ChrW(sArr2(X))
Next X
Hex2Chr = cal2
End Function
Public Function Chr2Hex(ByVal chr As String) As Variant
Dim i As Integer
Dim b As Integer
Dim c As Integer
Dim varR As String
Dim d As Variant
Do Until i = Len(chr)
c = i + 1
b = i - 2
If b <= 0 Then b = 1
d = hex$(AscW(Mid(chr, c, 1)))
If Len(d) = 1 Then d = "0" & dvarR = varR & " " & d
i = i + 1
Loop
Chr2Hex = LTrim(varR)
End Function
WideCharToMultiByte :UNICODE --> MBCS
MultiByteToWideChar : MBCS --> UNICODE/////////
顺便提一下,你好象是用的是VB,字符串是UNICODE形式的.
字符串可以直接赋值给字节数组,你不需其它转换.
如:
dim bytArray() as byte
dim strMessage as string
strMessage = "123测试";
bytArray = strMessage
下面是bytArray的结果
bytArray[0] = 49 //1的ASCII低字节值.
bytArray[1] = 0 //1的ASCII高字节值.在内存中x86系统计算机是先低字节,后高字节.
bytArray[2] = 50
bytArray[3] = 0
bytArray[4] = 51
bytArray[5] = 0
bytArray[6] = 75
bytArray[7] = 109
bytArray[8] = 213
bytArray[9] = 309