代码之家  ›  专栏  ›  技术社区  ›  FabienM

有没有办法在Rust中使用可变大小的int和无符号整数类型?

  •  0
  • FabienM  · 技术社区  · 2 年前

    在Rust中,标准整数类型的大小 8, 16, 32, 64, 128 bits . 但是,是否可以操作具有非标准大小的整数类型,如 u24 , i7 , ... ?

    这些非标准尺寸可用于FPGA算法仿真。

    0 回复  |  直到 2 年前
        1
  •  3
  •   devio    2 年前

    Rust本机不支持任意大小的整数类型,如 u24 i7 作为其标准库的一部分。但是,您可以使用现有的整数类型和小心的操作来模拟此类类型,以确保只使用相关的位。例如,您可以使用 u32 表示 u24 通过确保只使用较低的24位。

    以下是如何定义和使用 u24 Rust中的类型:

    struct U24(u32);
    
    impl U24 {
        fn new(value: u32) -> Self {
            U24(value & 0x00FF_FFFF)
        }
    
        fn get(&self) -> u32 {
            self.0
        }
    
        // Add other methods as needed, ensuring that you mask the upper bits as appropriate.
    }
    
    fn main() {
        let a = U24::new(0x123456);
        let b = U24::new(0x654321);
    
        // Example operation: addition
        let sum = U24::new(a.get() + b.get());
        println!("Sum: {:X}", sum.get());
    }
    

    对于复杂或性能关键的应用程序,您可能需要查看以下板条箱 bitvec 这允许对单个比特进行更直接的控制,并且可以用于模拟任意比特长度的整数。

    试试代码 here