繁体   English   中英

如何在Python字符串中写入原始字节字符?

[英]How can I write raw byte characters in Python string?

我要开发一个通过套接字网络发送原始二进制数据的应用程序。

我被赋予了角色

0x53 0x69 0x75 0x64 0x69 0x5F 0x37 0x42 0x6D 0x00 0x04 0x00 0x01 0x00 0x01 0x00 0x00 0x00 0x00 0x00 0x00

有人告诉我,前几个字符

0x53 0x69 0x75 0x64 0x69 0x5F 0x37 0x42

手段

Siudi_7B

0x6D 0x00

手段

109

所以在我的代码中我有这个

message = "Siudi_7B 109 1 1"

相当于

0x53 0x69 0x75 0x64 0x69 0x5F 0x37 0x42 0x6D 0x00 0x04 0x00 0x01 0x00

现在最后几个字节我还没有得到含义。 我应该弄清楚。 我真的尽了最大的努力,但是什么都没有。

简而言之,我需要了解与

0x01 0x00

0x00 0x00 0x00 0x00

从套接字获取binary字符串时,可以使用binary.decode()将输入转换为字符串。 类似地,当您有一个string要写入套接字时,请使用string.encode()将其转换为二进制。

谢谢大家,PM 2Ring的评论帮助我指出了正确的方向。

所以我认为initail文档是错误的,

109不等于0x6D 0x00 109是0x31 0x30 0x39

因此,我将要求对任务进行更多说明。 非常感谢大家。

所以在代码中我将拥有

message = b"\x31\x30\x39"

如果您想知道每个十六进制字符,则应阅读模块binasciicodecs

import codecs,binascii
codes =[codecs.encode(i.encode(),"hex") for i in "Siudi_7B 109 1 1"]
print( codes )
bins  = [binascii.hexlify(i.encode()) for i in "Siudi_7B 109 1 1"]
print( bins )
for x in "Siudi_7B 109 1 1":
    print("{:5}".format(x),end="")
print()
print("0x"+" 0x".join([str(b.decode()) for b in  bins]) )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM