2017-12-02 1 views
0

TCP를 통해 전송 된 'double'(MATLAB의) 배열이 있습니다.전송 된 TCP 데이터를 파이썬에서 인쇄 가능한 텍스트로 변환

> b'?\xf0\x00\x00\x00\x00\x00\[email protected][\xc0\x00\x00\x00\x00\[email protected]`\x00\x00\x00\x00\[email protected]\x00\x00\x00\x00\[email protected]\xb0\x00\x00\x00\x00\[email protected]\x7f\xf0\x00\x00\x00\x00\[email protected]\x83\x18\x00\x00\x00\x00\[email protected]\x868\x00\x00\x00\x00\[email protected]\x87\xe0\x00\x00\x00\x00\[email protected][\x80\x00\x00\x00\x00\[email protected]@\x00\x00\x00\x00\[email protected]`\x00\x00\x00\x00\[email protected]\xa0\x00\x00\x00\x00\[email protected]\x7f\xe0\x00\x00\x00\x00\[email protected]\x83\x10\x00\x00\x00\x00\[email protected]\x860\x00\x00\x00\x00\[email protected]\x87\xd8\x00\x00\x00\x00\[email protected]\x88\x90\x00\x00\x00\x00\x00' 

가 어떻게이 읽을 수 있도록 원본과 동일하게보고 디코딩을 수행합니다 문자열로 인쇄 할 때

수신 측 (PYTHON),로 표시됩니다?

답변

1

표준 라이브러리의 struct 모듈을 사용하여 이진 데이터의 압축을 푸십시오.

struct.unpack 함수는 이진 데이터의 레이아웃과 데이터 자체를 정의하는 형식 문자열 인 두 개의 매개 변수를 허용합니다.

데이터가 네트워크를 통해 전송되므로 네트워크 주문 (형식 : !)을 가정합니다. 데이터는 의 두 배가되므로 double 유형 (형식 d)을 사용합니다. 구조체 모듈은 double에 대해 8의 크기를 정의하고 바이트 열의 길이는 144이므로 18의 두 배로 형식 문자열 !18d을 제공합니다. 이 출력을 사용하면 구조체 모듈에 정의 된 다른 형식의 일부 실험, 또는 정확히 어떻게 matlab에 serialises 데이터를 찾을 수 있습니다 당신이 다음 기대하지 않으면

>>> unpacked = struct.unpack('!18d', data) 
>>> unpacked                                                  
(1.0,                                                  
111.0,                                                  
211.0,                                                  
311.0,                                                  
411.0,                                                  
511.0,                                                  
611.0,                                                  
711.0,                                                  
764.0,                                                  
110.0,                                                  
210.0,                                                  
310.0,                                                  
410.0, 
510.0, 
610.0, 
710.0, 
763.0, 
786.0) 
>>> 

:

는 데이터의 압축을 풉니 다 네트워크를 통해 전송할 수 있습니다.

관련 문제