당신은 이미 당신이 요구 한대로 정확하게하고 있습니다.
data
은있는 그대로 소켓에서 수신 한 바이트입니다.
파이썬 3.x에서는 bytes
개체이며 bytearray
의 불변 버전입니다. Python 2.x에서 str
과 bytes
이 같은 유형이므로 str
개체입니다. 그러나 어느 쪽이나, 그 타입은 단지 바이트 문자열입니다.
문자가 아닌 숫자로 해당 바이트에 액세스하려는 경우 : Python 3.x에서는 bytes
을 인덱싱하거나 반복 할 뿐이지 만 Python 2.x에서는 각 문자에 ord
을 호출해야합니다. 쉽습니다.
또는 두 버전 모두 data = bytearray(data)
을 호출하면 변경할 수있는 bytearray
데이터 복사본을 만들 수 있습니다.이 복사본은 데이터를 색인화하거나 반복 할 때 문자가 아닌 숫자를 제공합니다.
따라서, 예를 들어, 우리는 텍스트 파일에 별도의 줄에 각 바이트의 진수 값을 기록하고 싶은 말은하자 (할 수있는 어리석은 일이 있지만 아이디어를 보여줍니다) 파이썬 2.7 :
data = client_sock.recv(1024)
with open('textfile.txt', 'a') as f:
for ch in data:
f.write('{}\n'.format(ord(ch)))
을
감사합니다. 'ord' 함수를 사용하여 하나 대신 4 바이트를 취하고 그 4 바이트를 float으로 표현할 수 있습니까? – user2426316
@ user2426316 : 아니요, 'ord' 함수는 각 값을 0-255의 정수로 가져올 수 있습니다. 당신이하고 싶지 않은 수동으로 4 개의 정수 중에서 부동 소수점을 만드는 법을 알아 내야 할 것입니다. 아마도 [struct.unpack'] (http://docs.python.org/2/library/struct.html#struct.unpack)을 찾고있을 것입니다. – abarnert