2017-12-16 5 views
0

サーバ - クライアントアーキテクチャのソケットを通して1バイトの数字をサーバに送る必要があります。サーバに1バイトの数字を送信する

1)どのように私は、整数オブジェクトが1バイトの数字(0 255または-127..127)

2)に変換することができます。このコードは私に14を与え、そのためには、整数オブジェクトは、14ビットを取る意味?

import sys 
x = 2 
print (sys.getsizeof(x)) 

3)私はあなたがバイナリ文字列を送ることができますPythonの

+0

オブジェクトには*名前*はありません。そのオブジェクトを参照する変数があり、変数*には名前 'x'があります。 –

+1

'struct.pack'を使用してください。 – Daniel

+1

Pythonの整数は任意のサイズにすることができます。 'sys.getsizeof(x)'を気にしないでください。それで何の役に立つものも得られません。したがって、ネットワーク上で整数を送信する前に、適切な範囲内にあることを確認する必要があります。その後、簡単に変換を行うことができます: 'bytes([x])' – freakish

答えて

1

でのデータ変換と接続され、いくつかのウェブサイトへのリンクをいただければ幸いです。これは、その後、ここに一つの文字(バイト)、フォーマットは'b'あるが含まれているバイナリ文字列を構築します

from struct import pack 

pack('b', x) 

:あなたは次のような文字列を作成することができます。それは、符号付き表記(符号なしは'B')に1バイト(文字)をパックすることを指定します。

私たちは、その後、取得:今、私たちは、例えばソケットを設定することができ

>>> sys.getsizeof(pack('b', 2)) 
34 

、および送信:バイト文字列を運ぶオブジェクトが大きくなること

>>> pack('b', 2) 
b'\x02' 

注意を例えばTCP/IP接続を介してサーバにデータを送信する。

import socket 
from struct import pack 

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
sock.connect(('127.0.0.1', 8080)) # set IP address and port of the connection 

sock.sendall(pack('b', 2)) # send one byte of data through the connection 
1

Pythonの整数には特定のサイズがありません。整数を送信するには、たとえばstruct.packなどを使用してバイトに変換する必要があります。

関連する問題