i24: A 24-bit Signed Integer Type for Rust
i24 provides a 24-bit signed integer type for Rust, filling the gap between i16 and i32. This type is particularly useful in audio processing, certain embedded systems, and other scenarios where 24-bit precision is required but 32 bits would be excessive.
Features
- Efficient 24-bit signed integer representation
- Seamless conversion to and from
i32 - Support for basic arithmetic operations with overflow checking
- Bitwise operations
- Conversions from various byte representations (little-endian, big-endian, native)
- Implements common traits like
Debug,Display,PartialEq,Eq,PartialOrd,Ord, andHash
Installation
Add this to your Cargo.toml:
[]
= "1.0.0"
Usage
use i24;
let a = from_i32;
let b = from_i32;
let c = a + b;
assert_eq!;
Safety and Limitations
- The valid range for
i24is [-8,388,608, 8,388,607]. - Overflow behavior in arithmetic operations matches that of
i32. - Bitwise operations are performed on the 24-bit representation. Always use checked arithmetic operations when dealing with untrusted input or when overflow/underflow is a concern.
Optional Features
- pyo3: Enables PyO3 bindings for use in Python.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request. This project needs more testing and verification.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Related Projects
This crate was developed as part of the Wavers project, a Wav file reader and writer for Rust.