1
当然,还有更好的方法将二进制字符串转换为十六进制字符串吗?将二进制字符串转换为十六进制字符串与Rust中的前导零号码
use std::num;
fn to_hex(val: &str, len: uint) {
println!("Bin: {}", val);
let mut int_val = 0i;
for (i,c) in val.chars().enumerate() {
if c == '1' {
int_val += num::pow(2i, i+1)/2;
}
}
let f32_val = int_val as f32;
let mut hex_val = std::f32::to_str_hex(f32_val).to_string();
while hex_val.len() != len*2 {
hex_val = "0".to_string() + hex_val;
}
println!("Hex: {} @ {} bytes", hex_val, len);
}
fn main() {
let value = "0001111";
to_hex(value,4);
}
这样做的结果是
Bin: 0001111
Hex: 00000078 @ 4 bytes
我使用rustc 0.12.0-夜间
为什么二进制字符串颠倒了?不应该是'1111000'来匹配'0x78'吗? – Dogbert 2014-10-09 19:00:00