从文件读入的Python十六进制字符串不再被解释为十六进制

时间:2016-03-23 21:42:59

标签: python string sockets hex

我正在使用python 2.7

我有一个包含十六进制字符串的文件:

    \x01\x02\x93AAA
    \x02\x02\x93AAA
    \x03\x02\x93AAA
....

它们是不可打印字符的混合,表示为十六进制,以及ascii中表示的可打印字符。

我正在根据他们的行号将他们读入地图。然后尝试通过套接字发送它。当我从地图发送而不是直字符串时,我收到的结果不一致。

示例代码:

print mymap[0]
mysocket.sendall(mymap[0])
mysocket.sendall("\x01\x02\x93AAA")

通过这两次发送尝试,在wireshark中,我可以看到第一个从mymap发送时是用ASCII发送的。因为它发送'\','x','0','1'而不是将其解释为十六进制0x01。第二行作为十六进制数据正确发送的位置。

print mymap [0]打印完全相同的字符串(“\ x01 \ x02 \ x93AAA”),那么为什么将其作为ASCII发送,将其发送为hex?

我希望它以十六进制形式发送,但是在使用我的地图时它会继续以ASCII格式发送它,而只是将发送中的字符串硬编码为十六进制。帮助

编辑:我更新了这个问题的标题,以反映实际存在的根本问题。对于那些后来发生的事情。我最初的想法是它与从地图中读取数据有关,而实际上问题是从文件中读取数据。

1 个答案:

答案 0 :(得分:1)

在Python代码m1.large是一个转义序列,在文本文件中它只是文本。你必须在发送之前取消对字符串的删除。

'\x01'