2013-10-10 29 views
0

我正在制作一个基本的服务器/客户端程序,并且我正在用Python制作客户端。我必须在发送消息之前格式化消息。第一个字段是消息长度。我可以计算消息长度,但是我需要将值存储在byte数组的前两个字节中。如果消息长度小于256,它应该只有一个字节。我怎么能强制这个数字是2个字节,而不用在前面加一个0x00?如何在Python中将一个字节int更改为两个字节?

+0

'struct'模块可能会有所帮助。 – GWW

回答

2

使用struct module。例如,要按网络顺序(big-endian)将整数打包为无符号的双字节值,您应该这样做:

> my_value = 1234 
> packed_bytes = struct.pack('>H', my_value) 
> print packed_bytes 
'\x04\xd2' 
+0

谢谢!这将起作用 –

+0

如果my_value等于150字节的一个字节值,那么即使技术上只占用1个字节,我如何强制将它压入packed_bytes的前两个字节?我只需要能够处理1个字节和2个字节的数字。 –

+0

@AlexJohnson:我不明白你的问题。如果'my_value'是150,那么这个代码的输出将是''\ x00 \ x96'',即两个字节的第一个字节为0。 –