OS: MAC
참고: 👉 점프 투 파이썬 - 라이브러리 예제 바로가기
004. C로 만든 데이터를 출력하려면? ― struct
- struct는 C처럼 데이터를 이진형으로 변환(pack) 하거나 다시 풀어(unpack) 주는 도구.(바이트 ↔ 숫자 변환)
- 파일·네트워크·하드웨어 데이터 교환 시 필수.
| 구분 | 내용 | 예시 | 결과 |
| 모듈 | C 구조체 데이터 처리용 (pack, unpack) |
import struct | |
| pack(fmt, v...) =pack(형태,값) |
값을 지정한 형태(타입)로 바꿔라 = 값을 포장(pack) |
import struct struct.pack('i', 10) #10을 4바이트 정수형태로 바꿔라 |
b'\n\x00\x00\x00' |
| unpack(fmt, bytes) | 바이트를 지정한 형식(fmt)으로 해석해서, 원래의 값으로 바꿔라 = 바이트를 풀기(unpack) |
import struct struct.unpack('i', b'\n\x00\x00\x00') |
(10,) #튜플 형태로 반환. 값이 하나라도 항상 튜플로 줌 |
| calcsize(fmt) | 포맷 크기 계산 | import struct struct.calcsize('i') |
4 |
| 소문자 포맷(음수 가능) | b : signed char (1바이트 정수) h : short (2바이트 정수) i : int (4바이트 정수) f : float((IEEE 754 단정도) d : double(배정도 실수) s : 문자열(bytes) |
① import struct struct.pack('hif', 5, 10, 2.3) ② import struct struct.pack('5s', b'hello') |
① b'\x05\x00\x00\x00\n\x00\x00\x0033\x13@' ② b'hello' |
| 대문자 포맷(음수 불가) | B, H, I, F, D, S | ① import struct struct.pack('B', 250) ② import struct struct.pack('B', -250) |
① b'\xfa' ② struct.error |
| < : 리틀엔디안 | 낮은 바이트부터 저장 주로 대부분의 PC (Intel, AMD, ARM) 사용 |
import struct struct.unpack('<i', b'\x01\x00\x00\x00') |
(1,) |
| > : 빅엔디안 | 높은 바이트부터 저장 주로 일부 네트워크 장비, 옛 IBM, Motorola CPU 등 사용 |
import struct struct.unpack('>i', b'\x01\x00\x00\x00') |
(16777216,) |
| C로 저장된 로그 분석/ 파일을 파이썬에서 읽을 때 |
open(filename, 'rb') → struct.unpack() 사용 |
1) 예시 참고 | |
| 바이너리 통신, IoT 센서 데이터 복원 시 |
struct.pack()으로 응답 데이터 생성 |

라이브러리 예제 문제: 다음은 구조체 데이터를 output 파일에 저장하는 C 프로그램으로, save_type은 double형 1개, int형 1개, char형 1개로 이루어진 구조체다. 이렇게 만들어진 바이너리 구조체 데이터(output 파일)를 파이썬으로 읽어서 내용을 확인하려면 어떻게 해야 할까?
| [파일명: struct_sample.c] #C 소스 파일 이름. 진짜 파일이름이 아님.(함정임) |
| #include <stdio.h> typedef struct { double v; #double(8바이트) int t; #int(4바이트) char c; #char(1바이트) } save_type; int main() { save_type s = {7.5f, 15, 'A'}; #double, int, char 순서대로 작성됨. 다만 C코드라서 파이썬 즉 바이트 타입으로 변환해서 사용필수! FILE *f = fopen("output", "w"); fwrite(&s, sizeof(save_type), 1, f); fclose(f); return 0; } |

스마트 인용 부호 및 대시 사용 끄기를 했는데도 메모장에 작성해서 파이썬 셸에 붙어넣으니 또 부호 오류가 발생했다.
코드 예시는 코딩용 편집기에서 하는게 좋다고 한다.
Visual Studio Code
1. 기본 세팅
👉 VSCode 다운로드 → VSCode 실행 → 좌측 아래 톱니바퀴(⚙️) 클릭 → 설정(Settings) → 검색창에 python 입력
→ “Python: Default Interpreter Path” 항목이 보이면 OK(나중에 파이썬 경로 지정 가능)

2. 파이썬 확장 기능 설치 (필수)
왼쪽 메뉴에서 확장(Extensions) 아이콘 (블록 네모 4개 모양) 클릭 → 검색창에 Python 입력
→ Microsoft Python Extension 설치

3. 스마트 따옴표 자동완성 끄기
Cmd + , → 검색창에 autoClosingQuotes 입력 → 설정값을 "never" 로 변경

4. 파이썬 자동 줄바꿈 / 들여쓰기 설정
검색창에 format on save 입력 → Editor: Format On Save 체크
검색창에 tab size 입력 → Editor: Tab Size = 4 (파이썬 표준 들여쓰기)


5. 추가 추천 세팅 (settings.json 직접 열기)
Cmd + Shift + P 입력 → 작은 입력창에 > 기호가 자동으로 찍혀 있어야함(명령어 팔레트) → 그 상태에서 Open Settings (JSON)
입력 → Preferences: Open Settings (JSON) 선택 → 하단의 코드 입력(중복코드는 보고 지우면 됨)

{
"editor.autoClosingQuotes": "never",
"editor.formatOnSave": true,
"editor.autoClosingBrackets": "always",
"editor.tabSize": 4,
"files.encoding": "utf8",
"python.analysis.autoImportCompletions": true,
"python.defaultInterpreterPath": "python3",
"terminal.integrated.defaultProfile.osx": "bash"
}

6. 파이썬 코드 바로 실행하기
VSCode 상단 파일(File) → 새 파일(New File) 클릭 → 파일명 test.py로 저장 → print("자동 따옴표 테스트") → ▶️선택(또는 Cmd + F5) → 결과 확인

아 근데 내가 원한건 따옴표가 자동으로 안붙는게 아닌데..
따옴표가 변형되지 않는건데 무튼 몰라 이제부터 예시는 여기서 작성해야겠다.
메모장이랑 터미널 따로 안 켜도 되니까 편하겠군.
'미래 먹거리를 위하여' 카테고리의 다른 글
| [파이썬 정복하기] 라이브러리 3장 - 다양한 데이터 다루기2 (맥OS 기준) (1) | 2025.11.04 |
|---|---|
| [파이썬 정복하기] 라이브러리 3장 - 다양한 데이터 다루기1 (맥OS 기준) (2) | 2025.11.03 |
| [파이썬 정복하기] 라이브러리 1장 - 텍스트 다루기(맥OS 기준) (0) | 2025.11.01 |
| [파이썬 정복하기] 점프 투 파이썬 8장 – 정규표현식 (책 없이 시작하기) (0) | 2025.10.31 |
| [파이썬 정복하기] 점프 투 파이썬 7장 – 파이썬 날아오르기 (책 없이 시작하기) (0) | 2025.10.30 |