Python의 구조체는 주로 C 구조 데이터를 처리하는 데 사용됩니다. 읽을 때 먼저 Python의 문자열 유형으로 변환된 다음 Tuple과 같은 Python의 구조화된 유형으로 변환됩니다. 일반적으로 입력 채널은 파일 또는 네트워크 바이너리 스트림에서 제공됩니다.
1.struct.pack() 및 struct.unpack()
변환 과정에서는 주로 형식 문자열을 사용하여 변환 방법을 지정합니다. 체재.
주요 메서드에 대해 이야기해 보겠습니다.
1.1 struct.pack(fmt,v1,v2,...)
v1, v2 및 기타 매개변수를 입력합니다. 값은 다음과 같습니다. 하나의 레이어로 래핑되며 래핑 방법은 fmt에 의해 지정됩니다. 래핑된 매개변수는 fmt를 엄격하게 준수해야 합니다. 마지막으로 은 래핑된 문자열 으로 반환됩니다.
1.2 struct.unpack(fmt,string)
이름에서 알 수 있듯이 압축을 푼다. 예를 들어 pack은 packaged이고 unpacked는 unpack에 사용될 수 있습니다. 튜플(tuple)을 반환 데이터(문자열)를 언패킹하여 얻은 데이터가 1개만 있어도 튜플로 언패킹됩니다. 그중 len(string)은 calcsize 함수를 포함하는 calcsize(fmt)와 동일해야 합니다. struct.calcsize(fmt): fmt 형식에 설명된 구조의 크기를 계산하는 데 사용됩니다.
형식 문자열은 하나 이상의 형식 문자로 구성됩니다. 이러한 형식 문자에 대한 설명은 다음과 같은 Python 설명서를 참조하세요.
Format | c Type | Python | Note |
---|---|---|---|
x | pad byte | no value | |
c | char | string of length 1 | |
b | signedchar | integer | |
B | unsignedchar | integer | |
? | _Bool | bool | (1) |
h | short | integer | |
H | unsignedshort | integer | |
i | int | integer | |
I | unsignedint | integer or long | |
l | long | integer | |
L | unsignedlong | long | |
q | longlong | long | (2) |
Q | unsignedlonglong | long | (2) |
f | float | float | |
d | double | float | |
s | char[] | string | |
p | char[] | string | |
P | void* | long |
2. 코드 예시
import struct # native byteorder buffer = struct.pack("ihb", 1, 2, 3) print repr(buffer) print struct.unpack("ihb", buffer) # data from a sequence, network byteorder data = [1, 2, 3] buffer = struct.pack("!ihb", *data) print repr(buffer) print struct.unpack("!ihb", buffer) Output: '\x01\x00\x00\x00\x02\x00\x03' (1, 2, 3) '\x00\x00\x00\x01\x00\x02\x03' (1, 2, 3)
코드 보기
먼저 매개변수 변경 1,2,3 Packing 패킹하기 전에는 1, 2, 3이 분명히 Python 데이터 유형의 정수에 속합니다. 패킹 후에는 C 구조의 이진 문자열이 됩니다. Python 문자열 유형으로 변환하면 'x01x00x00x00x02x00x03'으로 표시됩니다. 이 기계는 리틀 엔디안('리틀 엔디안')이므로 빅 엔디안과 리틀 엔디안의 차이점은 여기를 참조하십시오. 따라서 높은 비트는 낮은 주소 세그먼트에 배치됩니다. i는 C 구조체에서 int 유형을 나타냅니다. 이 머신은 4비트를 차지합니다. 1은 01000000으로 표현됩니다. h는 C 구조체의 짧은 유형을 나타내며 2비트를 차지하므로 0200으로 표현됩니다. 마찬가지로 b는 C 구조체의 부호 있는 char 유형을 나타내며 1비트를 차지합니다. 03. 기타 구조의 변환도 유사합니다. 일부 특수한 경우에는 공식 문서의 매뉴얼을 참조하면 됩니다. 빅 엔디안과 리틀 엔디안을 결정하는 선택적 문자입니다.
추가하지 않으면 기본값은 @입니다. 네이티브 문자 순서(빅 엔디안 또는 리틀 엔디안)를 사용하더라도 C 구조의 크기와 메모리 정렬은 네이티브 머신(네이티브)과 일치합니다. 일부 기계의 정수는 2비트인 반면 일부 기계는 4비트를 가지고 있으며 일부 기계 메모리는 4비트로 정렬되어 있고 일부는 n비트로 정렬되어 있습니다(n은 알 수 없으며 몇 개인지는 모릅니다).
다음과 같이 설명되는 표준 옵션도 있습니다. 표준을 사용하면 모든 유형에 대해 메모리 정렬이 없습니다.
예를 들어, 방금 애플릿의 후반부에서 사용된 형식 문자열의 첫 번째 비트는! , 이는 빅엔디안 모드 표준 정렬이므로 출력은 'x00x00x00x01x00x02x03'이며, 여기서 상위 비트 자체가 메모리의 상위 주소 비트에 배치됩니다.
Python의 struct.pack() 함수와 struct.unpack() 함수에 대한 자세한 소개는 PHP 중국어 홈페이지를 참고해주세요!

Python은 엄격하게 라인 별 실행이 아니지만 통역사 메커니즘을 기반으로 최적화되고 조건부 실행입니다. 통역사는 코드를 PVM에 의해 실행 된 바이트 코드로 변환하며 상수 표현식을 사전 컴파일하거나 루프를 최적화 할 수 있습니다. 이러한 메커니즘을 이해하면 코드를 최적화하고 효율성을 향상시키는 데 도움이됩니다.

Python에는 두 개의 목록을 연결하는 방법이 많이 있습니다. 1. 연산자 사용 간단하지만 큰 목록에서는 비효율적입니다. 2. 효율적이지만 원래 목록을 수정하는 확장 방법을 사용하십시오. 3. 효율적이고 읽기 쉬운 = 연산자를 사용하십시오. 4. 메모리 효율적이지만 추가 가져 오기가 필요한 itertools.chain function을 사용하십시오. 5. 우아하지만 너무 복잡 할 수있는 목록 구문 분석을 사용하십시오. 선택 방법은 코드 컨텍스트 및 요구 사항을 기반으로해야합니다.

Python 목록을 병합하는 방법에는 여러 가지가 있습니다. 1. 단순하지만 큰 목록에 대한 메모리 효율적이지 않은 연산자 사용; 2. 효율적이지만 원래 목록을 수정하는 확장 방법을 사용하십시오. 3. 큰 데이터 세트에 적합한 itertools.chain을 사용하십시오. 4. 사용 * 운영자, 한 줄의 코드로 중소형 목록을 병합하십시오. 5. Numpy.concatenate를 사용하십시오. 이는 고성능 요구 사항이있는 대규모 데이터 세트 및 시나리오에 적합합니다. 6. 작은 목록에 적합하지만 비효율적 인 Append Method를 사용하십시오. 메소드를 선택할 때는 목록 크기 및 응용 프로그램 시나리오를 고려해야합니다.

CompiledLanguagesOfferSpeedSecurity, while InterpretedLanguagesProvideeaseofusEandportability

Python에서, for 루프는 반복 가능한 물체를 가로 지르는 데 사용되며, 조건이 충족 될 때 반복적으로 작업을 수행하는 데 사용됩니다. 1) 루프 예제 : 목록을 가로 지르고 요소를 인쇄하십시오. 2) 루프 예제 : 올바르게 추측 할 때까지 숫자 게임을 추측하십시오. 마스터 링 사이클 원리 및 최적화 기술은 코드 효율성과 안정성을 향상시킬 수 있습니다.

목록을 문자열로 연결하려면 Python의 join () 메소드를 사용하는 것이 최선의 선택입니다. 1) join () 메소드를 사용하여 목록 요소를 ''.join (my_list)과 같은 문자열로 연결하십시오. 2) 숫자가 포함 된 목록의 경우 연결하기 전에 맵 (str, 숫자)을 문자열로 변환하십시오. 3) ','. join (f '({fruit})'forfruitinfruits와 같은 복잡한 형식에 발전기 표현식을 사용할 수 있습니다. 4) 혼합 데이터 유형을 처리 할 때 MAP (str, mixed_list)를 사용하여 모든 요소를 문자열로 변환 할 수 있도록하십시오. 5) 큰 목록의 경우 ''.join (large_li

PythonuseSahybrideactroach, combingingcompytobytecodeandingretation.1) codeiscompiledToplatform-IndependentBecode.2) bytecodeistredbythepythonvirtonmachine, enterancingefficiency andportability.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.