# binary-parser - 바이너리 데이터 고성능 파싱용 JavaScript 파서 빌더

> Clean Markdown view of GeekNews topic #25589. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=25589](https://news.hada.io/topic?id=25589)
- GeekNews Markdown: [https://news.hada.io/topic/25589.md](https://news.hada.io/topic/25589.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2026-01-06T09:31:02+09:00
- Updated: 2026-01-06T09:31:02+09:00
- Original source: [github.com/keichi](https://github.com/keichi/binary-parser)
- Points: 6
- Comments: 0

## Summary

**binary-parser**는 선언형 체인 API로 바이너리 포맷을 정의해, 복잡한 수작업 파서 구현 과정을 단순화합니다. 정의된 스키마를 기반으로 런타임에 파싱 코드를 **동적 생성·컴파일**하여 수동 구현에 가까운 성능을 내며, endianness·비트 필드·가변 배열 등 네트워크나 파일 포맷에서 자주 쓰이는 구조를 직접 표현할 수 있습니다. Node.js 환경에서 Buffer 기반 파싱에 최적화되어, 패킷 분석이나 커스텀 포맷 처리 같은 저수준 데이터 해석 작업에 유용합니다.

## Topic Body

- 구조화된 **바이너리 포맷을 선언형 체인 API로 정의**하기 위해 설계되어 수작업 파서 작성의 복잡성을 크게 줄임  
- 파서 정의를 기반으로 **런타임에 파싱 코드를 동적 생성·컴파일**해, 수동 구현에 가까운 실행 성능 제공  
- 정수·부동소수점·비트 필드·문자열·배열·choice·pointer 등 **바이너리 프로토콜에 필요한 핵심 타입을 폭넓게 지원**  (사용자 정의 유형도 가능)  
- endianness, bit 단위 필드, 가변 길이 배열 등 **네트워크·파일 포맷 파싱에 자주 등장하는 패턴을 직접 표현 가능**  
- `choice`와 `array` 조합을 통해 **TLV(Type-Length-Value) 구조**를 자연스럽게 모델링 가능  
- `pointer`, `seek`, `saveOffset` 등을 활용해 **ELF 같은 오프셋 기반 포맷** 파싱 지원  
- named parser(`namely`)를 통해 **재귀 구조 트리 파싱** 가능  
  - 단, 무한 재귀 방지를 위한 종료 조건 필요  
- CommonJS와 ESM 모두 지원하며, Node.js 환경에서 **Buffer / Uint8Array 기반 파싱**에 최적화  
- 이진 파일 분석, 네트워크 패킷 파싱, 커스텀 바이너리 포맷 처리 등 **저수준 데이터 해석 작업에 적합한 라이브러리**

## Comments



_No public comments on this page._
