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.
- 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
Add this to your Cargo.toml
:
[dependencies]
i24 = "1.0.0"
use i24::i24;
let a = i24::from_i32(1000);
let b = i24::from_i32(2000);
let c = a + b;
assert_eq!(c.to_i32(), 3000);
- The valid range for
i24
is [-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.
- pyo3: Enables PyO3 bindings for use in Python.
Contributions are welcome! Please feel free to submit a Pull Request. This project needs more testing and verification.
This project is licensed under the MIT License - see the LICENSE file for details.
This crate was developed as part of the Wavers project, a Wav file reader and writer for Rust.