# bitcoin-bigint
`bitcoin-bigint` is a Rust library that offers a macro-based system to define arbitrary-precision unsigned integer operations. It caters to Bitcoin and cryptography needs where manipulating large integers safely and efficiently is crucial.
## Overview
This crate provides macros that define large unsigned integer types (`BaseUInt32`, `BaseUInt64`, `BaseUInt128`, `BaseUInt160`, `BaseUInt256`) along with their associated arithmetic operations. Using these macros, developers can perform operations such as addition, subtraction, multiplication, division, bitwise operations, and shifts on large integers with adjustable bit-width.
## Key Features
- **Arbitrary Precision**: Define unsigned integers with sizes from 32 bits to 256 bits.
- **Comprehensive Operations**: Full suite of arithmetic, bitwise, and shift operations tailored to large integers.
- **Hexadecimal Support**: Convert integers to and from hexadecimal string representation seamlessly.
- **Random Generation**: Simple random number generator for testing and utility functions.
## Usage
To use the `bitcoin-bigint` crate, add the following to your `Cargo.toml`:
```toml
[dependencies]
bitcoin-bigint = "0.1.18"
```
Then, you can define your own unsigned integer operations:
```rust
use bitcoin_bigint::{bigint, BaseUInt256};
fn main() {
let mut num = BaseUInt256::from(100u64);
let addend = BaseUInt256::from(50u64);
num += &addend;
println!("Result of addition: {}", num.to_string());
}
```
## Repository
For more information and to contribute, visit the [GitHub repository](https://github.com/klebs6/bitcoin-rs).
## License
Licensed under MIT License.
## Disclaimer
The README.md file is generated by an AI model and may not be 100% accurate; however, it should be pretty good.