我有一个专有的客户端应用程序,它可以从网络设备发送和接收TCP数据包到回收站,如下所示:
发送: 14字节01 69 80 10 0E 0F 00 00 0 1C 0D 64 82 .i..........d。
接收: 42字节01 69 80 10 01 2A 00 D0 DC CC 0C BB C0 40 00 00 00 D0.i...*.......@.00000000001C0D F6 =.或者看到图片
我需要和Lua提出同样的要求。我已经找到了一些用于此类通信的工作示例(为前任),但我不知道应该给出哪些字符串作为参数
tcp:send("string");我应该给它一串巫术吗?即'01698010010E0F0000001C0D6482‘
还是第一次将妖术转换成ACSII?如果是,那么如何(零不会转换成符号)?
发布于 2022-07-26 13:19:02
你应该给它你想要发送的字符串。如果你写“016980”它是一个字符串,包含小数值48 (ascii位数0)、49 (ascii数字1)、54 (ascii数字6)等。这不是你想要的。您希望发送十进制值1,105 (十六进制69),128 (十六进制80)等等。
幸运的是,Lua字符串可以容纳任何字节(与Python字符串不同)。所以你只需要用这些字节写一个字符串。您可以使用然后是两位数的十六进制代码将任何字节写入字符串。所以你可以这样写你的电话:
tcp:send("\x01\x69\x80\x10\x01\x0E\x0F\x00\x00\x00\x1C\x0D\x64\x82")如果您使用的是高于5.2的Lua版本,则可以使用不可用,但仍然可以使用\和3位十进制代码。
https://stackoverflow.com/questions/73123957
复制相似问题