MST
星途 面试题库

面试题:Rust中十进制转十六进制的控制台输出实现

在Rust中,要求编写一个函数,将一个十进制整数转换为十六进制字符串,并通过控制台输出。请考虑处理负数情况,同时注意十六进制中10 - 15要用字母A - F表示。
18.6万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
fn decimal_to_hex_string(decimal: i32) -> String {
    if decimal == 0 {
        return "0".to_string();
    }
    let mut num = if decimal < 0 { -decimal as u32 } else { decimal as u32 };
    let mut hex_chars = Vec::new();
    while num > 0 {
        let digit = num % 16;
        hex_chars.push(match digit {
            0...9 => (digit + b'0') as char,
            10 => 'A',
            11 => 'B',
            12 => 'C',
            13 => 'D',
            14 => 'E',
            15 => 'F',
            _ => unreachable!()
        });
        num /= 16;
    }
    if decimal < 0 {
        hex_chars.push('-');
    }
    hex_chars.into_iter().rev().collect()
}

fn main() {
    let decimal = -42;
    let hex_string = decimal_to_hex_string(decimal);
    println!("{} in hexadecimal is: {}", decimal, hex_string);
}