gpt4 book ai didi

将存储在 2 个无符号字符中的二进制转换为整数

转载 作者:行者123 更新时间:2023-11-30 15:21:11 26 4
gpt4 key购买 nike

如果我有两个变量:

unsigned char var1, var2;
var1 = 4A; // for simplicity I am showing the hex value 4A, but it is 1
// byte of binary representing the value 4A - 0100 1010
var2 = 3F;

我想从函数返回由 3F4A 给出的整数结果

在 C 语言中我可以简单地做到这一点吗?

int result;
var2 << 8; // left shift var2 by 8 bits
result = var1 + var2;
return result;

我可以简单地以这种方式将存储在 char 变量中的二进制“转换”为 int 吗?即结果会返回整数 16202?

最佳答案

尽管在大多数平台上都可以使用有符号算术,但为了迂腐地正式正确,您应该使用无符号类型来计算位模式。

现在,首先

var2 << 8;

不左移var2:它只是一个计算结果的表达式,被丢弃。

该结果是有符号类型 int,因为 int 是操作数的最高通用类型。

您想要进行无符号计算,因此请确保至少一个操作数是无符号类型,即

return static_cast<int>( var1 + (var2 << 8u) );

要完全实现位级,请将 + 替换为位级 OR、|。但逻辑上并不重要,很可能会生成相同的机器代码。

关于将存储在 2 个无符号字符中的二进制转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29632254/

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