You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust中如何将二进制整数转换为二进制字符串或数字数组?

二进制整数转二进制字符串/数组的Rust实现

转二进制字符串

Rust的格式化语法支持直接将整数转为二进制字符串,使用{:b}格式符即可,无需先转十进制:

let x: u8 = 0b101;
let s = format!("{:b}", x);
println!("{:?}", s); // 输出 "101"

如果需要补前导零到固定长度(比如u8对应的8位),可以用{:08b},输出结果为00000101。

转二进制数组

要得到[1,0,1]这类数组,需要通过位运算逐位提取每一位的数值:

let x: u8 = 0b101;
// 提取有效二进制位(不含前导零)
let leading_zeros = x.leading_zeros() as usize;
let mut a = Vec::new();
// 从最高有效位到最低位遍历
for i in (0..(8 - leading_zeros)).rev() {
    let bit = ((x >> i) & 1) as u8;
    a.push(bit);
}
// 如果需要固定长度的完整位数数组(比如u8的8位)
let mut fixed_a = [0u8; 8];
for i in 0..8 {
    fixed_a[7 - i] = ((x >> i) & 1) as u8;
}
println!("{:?}", a); // 输出 [1, 0, 1]
println!("{:?}", fixed_a); // 输出 [0, 0, 0, 0, 0, 1, 0, 1]

你之前尝试的to_ne_bytes()和to_be_bytes()是将整数转换为字节数组(比如u8类型会得到长度为1、值为5的数组),和提取二进制位的需求不匹配,所以无法得到目标结果。

内容的提问来源于stack exchange,提问作者sdaadsa dasdsasad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 19:04:52