您可以使用struct
module從任意佈局構建二進制字符串。
這隻能生成字節對齊的結構,但你需要字節對齊才能在網絡套接字上發送。
編輯:
所以,你真的生成的格式確實有不匹配位8-1-1-2-12-16等
爲了插座時」上發將需要字節對齊,但我想協議處理一些如何。 (可能與填充位的地方?)
我的新建議是建立一個位串,然後砍它成8位的塊和轉換從那裏:
input_binary_string = "110010111111111111101010" ## must be a multiple of 8
out = []
while len(input_binary_string) >= 8:
byte = input_binary_string[:8]
input_binary_string = input_binary_string[8:]
b = int(byte,2)
c = chr(b)
out.append(c)
## Better not have a bits left over
assert len(input_binary_string) == 0
outString = "".join(out)
print [ ord(c) for c in out ]
結構似乎無法處理添加一點點......我錯過了什麼? – 2009-10-05 16:00:02
可以與結構模塊和套接字一起使用的最小數據單位是1個字節 – Steg 2009-10-05 16:07:32
我假設那意味着結構模塊不能幫助我。 – 2009-10-05 16:10:02