引自免费微信小程序:皆我百晓生
在Visual FoxPro (VFP) 中,如果你想要发送原始的HEX字符串而不经过任何转换,你需要确保在发送时保持原始格式。看起来你在接收端接收到的数据已经是正确的HEX表示,但可能是在发送前进行了某种处理。
首先,确认一下你使用的CREATEBINARY()函数是否真的对输入的HEX字符串做了转换。这个函数通常用于创建二进制数据,而不是简单的字符串处理。如果你只是想将一个字符串转换为其对应的ASCII值,可以考虑使用其他方法。
这里有一个简单的例子,展示如何从HEX字符串创建二进制数据并在VFP中发送它:
* 假设你的HEX字符串存储在一个变量中
hex_string = "010203"
* 将HEX字符串转换为字节数组
byte_array = SPACE(LEN(hex_string)/2)
FOR i = 1 TO LEN(hex_string) STEP 2
byte_array[i/2] = VAL(MID(hex_string, i, 2))
ENDFOR
* 创建二进制数据
binary_data = CREATEBINARY(byte_array)
* 使用WINSOCK控件发送数据
sock = CREATEOBJECT("MSWinsock")
sock.connect("192.168.1.89", 8899)
sock.Send(binary_data)
这段代码首先将HEX字符串分割成两字符一组,然后将其转换为对应的十进制数字并存入字节数组中。之后,使用CREATEBINARY()函数将字节数组转换为二进制数据,最后通过WINSOCK控件发送出去。
请确保在接收端的设置正确地解析接收到的二进制数据为HEX字符串,而不是默认的ASCII或其他格式。这取决于你的编码器如何读取接收到的数据。如果在接收端仍然看到的是“303130323033”,那么问题可能出在接收端的配置上,而非发送端。在这种情况下,你应该检查接收端的设置,确保它能正确识别并显示接收到的二进制数据。