バイナリ整数の文字列表現があり、ソケットを介して送信するには、正確なビット構造を持つバイトが必要です。
たとえば、長さ 16 の文字列がある場合0000111100001010
、同じビット構造の 2 バイトが必要です。この場合、最初のバイトは の int 値を15
持ち、2 番目のバイトは として持つ必要があります10
。ascii
フォーマットで印刷できるかどうかは問題ではありません。どうすれば入手できますか?
の形式でバイトを作成する次の方法を試しました0xf0xa
。ただし、これは 2 バイトではなく 6 バイトのサイズです。
def getByte(s):
if(len(s) != 8):
return
b = b'0'
for c in s:
b = (int(b) | int(c)) & 0x0000ff #This makes b an integer
b = b << 1
b = b >> 1 #because of 1 extra shift
b = hex(b).encode('utf-8') #how else can I get back to byte from int?
return(b)
このメソッドは長さ 8 の文字列を取り、同じ内部ビット構造のバイトを与えることを意図していますが、失敗します。(私はに似たものが必要ですstrtol
。C
)
何か助けてください。