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

问题描述 投票:0回答:1

在 Rust 中,标准整数类型的大小为 8、16、32、64、128 位。 但是是否可以操作具有非标准大小的整数类型,例如

u24
i7
、...?

这些非标准尺寸对于 FPGA 算法仿真很有用。

math rust integer fpga
1个回答
0
投票

Rust 本身不支持任意大小的整数类型,例如

u24
i7
作为其标准库的一部分。但是,您可以使用现有的整数类型和仔细的操作来模拟此类类型,以确保仅使用相关位。例如,您可以使用
u32
来表示
u24
,方法是确保仅使用较低的 24 位。

以下是如何在 Rust 中定义和使用

u24
类型的示例:

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
这样的包,它允许对各个位进行更直接的控制,并可用于模拟任意位长度的整数。

尝试代码这里

© www.soinside.com 2019 - 2024. All rights reserved.