首页 > 解决方案 > 如何强制 rust 正确格式化十六进制和其他非 base-10 整数?

问题描述

我正在尝试以十六进制表示法打印一个负整数,但无法设法让 rust 自动打印负号。以下代码说明了问题(指向游戏笔的链接):

fn main() {
    let x = i8::from_str_radix("-80", 16).unwrap();
    assert_eq!(x, -0x80);
    println!("{:x}!", x as i8);
} 

运行时,此代码写入80!stdout不是预期的 -80。我尝试添加+符号标志,但输出仍然不正确(实际上,它前面加上了不正确的“+”号!)。据我所知,这个问题会影响除 10 之外的所有基地。Rust 的官方文档没有提到这个怪癖。

我的问题是:

  1. 这是预期的行为吗?
  2. 如果确实是有意的,那么是否可以强制 rust 的格式化程序打印一个负号?(以避免将其作为特殊情况处理)。

标签: rust

解决方案


推荐阅读