gpt4 book ai didi

c++ - 将十六进制数正确转换为十进制数(也是负数)

转载 作者:行者123 更新时间:2023-11-30 05:19:46 25 4
gpt4 key购买 nike

正如标题所说,我正在尝试将 0x320000dd 等十六进制数字转换为十进制数字。我的代码仅适用于正数,但在涉及表示负十进制数的十六进制数时失败。这是我的代码的摘录:

         cin>>hex>> x;
unsigned int number = x;
int r = number & 0xffffff;

我输入的是十六进制,电脑自动转换成整数。我想要做的是获取十六进制数的操作数,即最后 24 位。你能帮我让我的代码为负值工作,比如 :0x32fffdc9 或 0x32ffffff 吗?非常感谢!

编辑:

我希望我的输出是:0x32fffdc9 --> -567或者0x32ffffff --> -1

所以只是普通的十进制值,但它为上面的示例提供了 16776649 和 16777215。

最佳答案

负整数通常存储在 2's complement 中这意味着如果您的最高有效位 (MSB) 未设置,则该数字不是负数。这意味着就像您需要取消设置数字的 8 位 MSB 以将 32 位数字限制为 24 位正数一样,您需要设置的 8 位 MSB你的数字限制为负数:

const int32_t r = 0x800000 & number ? 0xFF000000 | number : number & 0xFFFFFF;

vector<bool>bitset可能值得您考虑,因为它们会将十六进制数阐明为要设置的位范围。

关于c++ - 将十六进制数正确转换为十进制数(也是负数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40996180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com