|
| 1 | +# `BitArray` |
| 2 | + |
| 3 | +> *Read this in other languages: [English](README.md), :kr: [Korean](README.ko.md) |
| 4 | +
|
| 5 | +<br /> |
| 6 | + |
| 7 | +`BitArray`는 **비트 단위 데이터 조작 및 관리**를 위한 경량 클래스 입니다. |
| 8 | +**C++** 및 **Python** 두 언어로 구현되어 있으며, 네트워크, 데이터 압축, 바이너리 분석 등의 분야에서 활용 가능합니다. |
| 9 | + |
| 10 | +## 📁 프로젝트 구조 |
| 11 | + |
| 12 | +``` |
| 13 | +BitArray-main/ |
| 14 | +├── cpp/ # C++ 구현 |
| 15 | +│ ├── main.cpp |
| 16 | +│ └── README.md |
| 17 | +├── python/ # Python 구현 |
| 18 | +│ ├── BitArray.py |
| 19 | +│ └── README.md |
| 20 | +├── README.md # 프로젝트 소개 문서 |
| 21 | +├── LICENSE |
| 22 | +└── .gitignore |
| 23 | +``` |
| 24 | + |
| 25 | +--- |
| 26 | + |
| 27 | +## 💡 기능 요약 |
| 28 | + |
| 29 | +| 기능 | 설명 | |
| 30 | +|---------------|----------------------------------------------------------------------| |
| 31 | +| 비트 초기화 | 바이트 배열 또는 비트 크기를 기반으로 비트 배열 생성 | |
| 32 | +| 비트 추출 | 특정 오프셋과 길이에 따라 부분 비트 배열 추출 | |
| 33 | +| 비트 병합 | 다른 비트 배열을 지정 위치에 병합 가능 | |
| 34 | +| 비트 연산 | `+`, `<<`, `>>` 연산자 지원 | |
| 35 | +| 비트 반전 | 비트 순서를 역으로 뒤집는 `reverser()` 지원 | |
| 36 | +| 시각화 | 사람이 읽기 쉬운 형식으로 비트 출력 (`print`, `dump`) | |
| 37 | +| 유닛 테스트 | 다양한 연산에 대한 테스트 코드 포함 | |
| 38 | + |
| 39 | +--- |
| 40 | + |
| 41 | +## 🧠 언어별 구현 |
| 42 | + |
| 43 | +### ✅ C++ |
| 44 | + |
| 45 | +- 구현 파일: `cpp/` |
| 46 | +- 주요 클래스: `BitArray` |
| 47 | +- STL 기반 고성능 구현 |
| 48 | +- 단위 테스트 포함 (main.cpp) |
| 49 | +- 주요 특징: |
| 50 | + - `std::vector<uint8_t>` 기반 저장 |
| 51 | + - `get`, `merge`, `toArray`, `dump` 등 다양한 비트 처리 메서드 제공 |
| 52 | + |
| 53 | +📄 자세한 내용: [`cpp/README.md`](cpp/README.md) |
| 54 | + |
| 55 | +--- |
| 56 | + |
| 57 | +### ✅ Python |
| 58 | + |
| 59 | +- 구현 파일: `python/` |
| 60 | +- 주요 클래스: `BitArray` |
| 61 | +- 파이썬 리스트와 비트 조작을 통한 구현 |
| 62 | +- 주요 특징: |
| 63 | + - 비트 배열 병합 및 추출 |
| 64 | + - `to_array`, `to_int_array`, `reverser`, `__add__`, `__rshift__`, `__lshift__` 지원 |
| 65 | + - 단위 테스트 함수 포함 |
| 66 | + |
| 67 | +📄 자세한 내용: [`python/README.md`](python/README.md) |
| 68 | + |
| 69 | +--- |
| 70 | + |
| 71 | +## 🔬 사용 예시 |
| 72 | + |
| 73 | +### C++ 예시 |
| 74 | + |
| 75 | +```cpp |
| 76 | +BitArray a({0b11000000}, 3); |
| 77 | +a.print(); // 출력: 110 |
| 78 | + |
| 79 | +BitArray b({0b01000000}, 2); |
| 80 | +auto c = a + b; |
| 81 | +c.print(); // 출력: 11001 |
| 82 | +``` |
| 83 | +
|
| 84 | +### Python 예시 |
| 85 | +
|
| 86 | +```python |
| 87 | +bit_array = BitArray([0b11000000], 8) |
| 88 | +bit_array.print() # 출력: 1100 0000 |
| 89 | +
|
| 90 | +sub_array = bit_array.get(2, 3) |
| 91 | +sub_array.print() # 출력: 000 |
| 92 | +``` |
| 93 | + |
| 94 | +--- |
| 95 | + |
| 96 | +## 🔧 설치 및 실행 |
| 97 | + |
| 98 | +### C++ |
| 99 | +```bash |
| 100 | +cd cpp |
| 101 | +g++ main.cpp -std=c++17 -o bitarray |
| 102 | +./bitarray |
| 103 | +``` |
| 104 | + |
| 105 | +### Python |
| 106 | +```bash |
| 107 | +cd python |
| 108 | +python3 BitArray.py # 내부에서 runTests() 실행 가능 |
| 109 | +``` |
| 110 | + |
| 111 | +--- |
| 112 | + |
| 113 | +## 🧪 테스트 |
| 114 | + |
| 115 | +각 구현에 단위 테스트 코드 포함되어 있어, 실행 시 기능이 정상 동작하는지 확인할 수 있습니다. |
| 116 | + |
| 117 | +--- |
| 118 | + |
| 119 | +## 📜 라이선스 |
| 120 | + |
| 121 | +- MIT License |
| 122 | +- https://github.com/JayTwoLab/BitArray |
| 123 | + |
0 commit comments