理解C+中的位移位+; < >我必须调试一个由别人编写的C++代码。我在比特转换方面几乎没有经验,因此我提出了这个问题。以下是同一代码的修改版本(值和与位移位无关的代码): void get16Bits1(const char * data) { cout<<(((uint32_t)((const uint8_t *)(data))[1]) << 8)<<endl; cout<<(uint32_t)((const uint8_t *)(data))[0]<<endl; } int main(){ const char * data = "francesmccurdey\0"; get16Bits1(data); return 0; }

理解C+中的位移位+; < >我必须调试一个由别人编写的C++代码。我在比特转换方面几乎没有经验,因此我提出了这个问题。以下是同一代码的修改版本(值和与位移位无关的代码): void get16Bits1(const char * data) { cout<<(((uint32_t)((const uint8_t *)(data))[1]) << 8)<<endl; cout<<(uint32_t)((const uint8_t *)(data))[0]<<endl; } int main(){ const char * data = "francesmccurdey\0"; get16Bits1(data); return 0; },c++,linux,gcc,bit-manipulation,C++,Linux,Gcc,Bit Manipulation,我没有得到的部分是get16Bits1()函数,强制转换为uint32\t会更改输出。当我有这个: void get16Bits1(const char * data) { cout<<((const uint8_t *)(data))[1]<<endl; cout<<((const uint8_t *)(data))[0]<<endl; } output is: r f void get16Bi

我没有得到的部分是
get16Bits1()
函数,强制转换为
uint32\t
会更改输出。当我有这个:

void get16Bits1(const char * data)
    {
        cout<<((const uint8_t *)(data))[1]<<endl;
        cout<<((const uint8_t *)(data))[0]<<endl;
    }

output is:
r
f
void get16Bits1(常量字符*数据)
{

cout
cout以十六进制查看输出有帮助吗

7200
66

简短回答:
uint8\u t
通常是一种字符类型。是的,这与位移位无关。这是打印字符和打印整数之间的区别。我可以理解
f
的等效值是102 ascii,但为什么
r
的等效值这么大29184@articSnail截断,“庞大的数字”来自`
7200
66