An open API service indexing awesome lists of open source software.

https://github.com/jaytwolab/bitarray

bit-level data manipulation and management for C++ and Python :kr: C++와 파이썬이 지원되는 비트 단위 데이터 조작 및 관리
https://github.com/jaytwolab/bitarray

Last synced: 6 months ago
JSON representation

bit-level data manipulation and management for C++ and Python :kr: C++와 파이썬이 지원되는 비트 단위 데이터 조작 및 관리

Awesome Lists containing this project

README

          

# `BitArray`

> *Read this in other languages: [English](README.md), :kr: [Korean](README.ko.md)


`BitArray`는 **비트 단위 데이터 조작 및 관리**를 위한 경량 클래스 입니다.
**C++** 및 **Python** 두 언어로 구현되어 있으며, 네트워크, 데이터 압축, 바이너리 분석 등의 분야에서 활용 가능합니다.

## 📁 프로젝트 구조

```
BitArray-main/
├── cpp/ # C++ 구현
│ ├── main.cpp
│ └── README.md
├── python/ # Python 구현
│ ├── BitArray.py
│ └── README.md
├── README.md # 프로젝트 소개 문서
├── LICENSE
└── .gitignore
```

---

## 💡 기능 요약

| 기능 | 설명 |
|---------------|----------------------------------------------------------------------|
| 비트 초기화 | 바이트 배열 또는 비트 크기를 기반으로 비트 배열 생성 |
| 비트 추출 | 특정 오프셋과 길이에 따라 부분 비트 배열 추출 |
| 비트 병합 | 다른 비트 배열을 지정 위치에 병합 가능 |
| 비트 연산 | `+`, `<<`, `>>` 연산자 지원 |
| 비트 반전 | 비트 순서를 역으로 뒤집는 `reverser()` 지원 |
| 시각화 | 사람이 읽기 쉬운 형식으로 비트 출력 (`print`, `dump`) |
| 유닛 테스트 | 다양한 연산에 대한 테스트 코드 포함 |

---

## 🧠 언어별 구현

### ✅ C++

- 구현 파일: `cpp/`
- 주요 클래스: `BitArray`
- STL 기반 고성능 구현
- 단위 테스트 포함 (main.cpp)
- 주요 특징:
- `std::vector` 기반 저장
- `get`, `merge`, `toArray`, `dump` 등 다양한 비트 처리 메서드 제공

📄 자세한 내용: [`cpp/README.ko.md`](cpp/README.ko.md)

---

### ✅ Python

- 구현 파일: `python/`
- 주요 클래스: `BitArray`
- 파이썬 리스트와 비트 조작을 통한 구현
- 주요 특징:
- 비트 배열 병합 및 추출
- `to_array`, `to_int_array`, `reverser`, `__add__`, `__rshift__`, `__lshift__` 지원
- 단위 테스트 함수 포함

📄 자세한 내용: [`python/README.ko.md`](python/README.ko.md)

---

## 🔬 사용 예시

### C++ 예시

```cpp
BitArray a({0b11000000}, 3);
a.print(); // 출력: 110

BitArray b({0b01000000}, 2);
auto c = a + b;
c.print(); // 출력: 11001
```

### Python 예시

```python
bit_array = BitArray([0b11000000], 8)
bit_array.print() # 출력: 1100 0000

sub_array = bit_array.get(2, 3)
sub_array.print() # 출력: 000
```

---

## 🔧 설치 및 실행

### C++
```bash
cd cpp
g++ main.cpp -std=c++17 -o bitarray
./bitarray
```

### Python
```bash
cd python
python3 BitArray.py # 내부에서 runTests() 실행 가능
```

---

## 🧪 테스트

각 구현에 단위 테스트 코드 포함되어 있어, 실행 시 기능이 정상 동작하는지 확인할 수 있습니다.

---

## 📜 라이선스

- MIT License
- https://github.com/JayTwoLab/BitArray