Python 3 빈 파일 을 일정한 데이터 자릿수 형식 으로 처리 하 는 방법
문제:우리 가 일반적으로 처리 하 는 가장 원시 적 인 데 이 터 는 빈 파일 입 니 다.열 면 다음 과 같이 16 진법 으로 저 장 됩 니 다.
MATLAB 처리 시 앞의 10 개 수,int 32 데이터 형식 을 다음 과 같이 읽 습 니 다.위의 그림 의 빨간색 원 은 MATLAB 가 읽 은 데 이 터 를 표시 하고 앞의 10 개 데 이 터 는 메타 데 이 터 를 표시 합 니 다.
MATLAB 에서 읽 은 10 개의 데이터 의 결과:
한편,Python 에 서 는 지정 한 데이터 형식 자릿수 에서 bin 파일 의 데 이 터 를 읽 을 수 없 는 것 같 습 니 다.예 를 들 어 python 의 read()로 읽 으 려 고 할 때 그림 1 의 파란색 선 이 원 하 는 데 이 터 를 표시 하고 그림 에 두 개의 데 이 터 를 원 합 니 다.다음 프로그램 으로 MATLAB 가 읽 은 10 개의 데 이 터 를 읽 으 려 면 40 개가 필요 합 니 다.
결 과 는 다음 과 같다.
세 개의 데이터 가 대응 할 때마다 MATLAB 에서 읽 은 데이터 입 니 다.
struct 패키지 에 있 는 unpack 함수 로 문 제 를 해결 하려 면 아 쉬 울 때 python 에서 unpack 은 float 32 를 지원 하지 않 고 int 32 를 지원 하지 않 기 때문에 위 에서 python 으로 데 이 터 를 읽 을 때 32 비트 로 읽 을 수 없고 최대 8 비트 로 읽 을 수 없 기 때문에 python 은 각각 읽 을 때 파란색 코일 의 데 이 터 를 읽 습 니 다.
\#주어진 형식(fmt)에 따라 바이트 흐름 string 을 분석 하고 해 석 된 tuple 을 되 돌려 줍 니 다.
unpack(fmt, string)
string 는 다음 과 유사 합 니 다.
FORMAT
C TYPE
PYTHON TYPE
STANDARD SIZE
NOTES
x
pad byte
no value
c
char
string of length 1
1
b
signed char
integer
1
(3)
B
unsigned char
integer
1
(3)
?
_Bool
bool
1
(1)
h
short
integer
2
(3)
H
unsigned short
integer
2
(3)
i
int
integer
4
(3)
I
unsigned int
integer
4
(3)
l
long
integer
4
(3)
L
unsigned long
integer
4
(3)
q
long long
integer
8
(2), (3)
Q
unsigned long long
integer
8
(2), (3)
f
float
float
4
(4)
d
double
float
8
(4)
s
char[]
string
p
char[]
string
P
void *
integer
(5), (3)
개인 적 으로 python 쪽 은 matlab 가 좋 지 않다 고 생각 합 니 다.
따라서 python 은 MATLAB 의 fread(f,N,int 32)나 fread(f,N,real*4)와 유사 한 방식 으로 위의 그림 의 문자 흐름 을 읽 을 수 없고 해석 할 수 없습니다.
이상 의 Python 3 는 일정한 데이터 자릿수 형식 으로 bin 파일 을 처리 하 는 방법 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 께 참고 가 되 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
#2_Raspberry Pi 3B+에서 LINE에 일기 예보 알림도쿄에 와서 갑자기 비가 오는 경우가 많습니다. "아침 제대로 일기 예보를 체크해 두면..."라고 후회하는 것이 자주. LINE에 매일 아침 일기 예보를 보내 주시면 좋지 않아? 라고 생각하고 만들어 보기로 했습니다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.