加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何使用stringstream格式化十六进制数字

发布时间:2020-12-16 03:16:29 所属栏目:百科 来源:网络整理
导读:我正在尝试将一个无符号的短整型转换为十六进制表示形式,并使用stringstream前缀为0.我似乎无法得到大写,0是正确的.这是我现在所在: USHORT id = 1127;std::stringstream ss;ss std::showbase std::uppercase std::setfill('0') std::setw(4) std::hex id;s
我正在尝试将一个无符号的短整型转换为十六进制表示形式,并使用stringstream前缀为0.我似乎无法得到大写,0是正确的.这是我现在所在:
USHORT id = 1127;
std::stringstream ss;
ss << std::showbase << std::uppercase << std::setfill('0') << std::setw(4) << std::hex << id;
std::string result = ss.str();

这导致前缀“0x”基数也是大写,但我希望它是小写的.它也导致在前缀0x base(当前为0X)之后的十六进制值中没有前缀0.例如,现在将输出0X467而不是预期的0x0467.我该如何解决?

解决方法

setw将设置整个格式化输出的宽度,包括显示的基数,这就是为什么你没有看到前导0.另外,如果使用std :: showbase,没有办法使基数显示为小写以及std ::大写.解决方案是手动插入基座,然后应用剩余的操纵器.
ss << "0x" << std::uppercase << std::setfill('0') << std::setw(4) << std::hex << id;

输出0x0467

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读