如何将char转换为unsigned int?

前端之家收集整理的这篇文章主要介绍了如何将char转换为unsigned int?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个char数组,真的用作字节数组,而不是用于存储文本.在数组中,有两个特定的字节表示我需要存储为无符号int值的数值.下面的代码说明了设置.
char* bytes = bytes[2];
bytes[0] = 0x0C; // For the sake of this example,I'm 
bytes[1] = 0x88; // assigning random values to the char array.

unsigned int val = ???; // This needs to be the actual numeric 
                        // value of the two bytes in the char array.  
                        // In other words,the value should equal 0x0C88;

我不知道如何做到这一点.我会假设它会涉及一些铸造和重铸的指针,但我不能让这个工作.如何实现我的最终目标?

UPDATE

谢谢Martin B,快速回复,但这不行.具体来说,在我的情况下,两个字节是0x00和0xBC.显然我想要的是0x000000BC.但是,我在unsigned int中的内容是0xffffffbc.

发布的代码是我的实际的原始代码,只要所有字节都小于128(.i.e.正号的char值)就可以正常工作.

解决方法

unsigned int val = (unsigned char)bytes[0] << CHAR_BIT | (unsigned char)bytes[1];

如果sizeof(unsigned int)> = 2 * sizeof(unsigned char)(不是C标准保证的东西)

现在…这里的有趣的事情肯定是运算符的顺序(在许多年中,我只能记住,–,*和/ …羞耻我:-),所以我总是把尽可能多的括号我可以). []是王.二是(演员).第三个是<第四是| (如果您使用而不是|,请记住,这比“<”更重要,因此您需要制作) 我们不需要上传(无符号整数)两个(unsigned char),因为有一个integral promotion将为我们做一个,而另一个应该是一个自动Arithmetic Conversion.

我会补充说,如果你想减少头痛:

unsigned int val = (unsigned char)bytes[0] << CHAR_BIT;
val |= (unsigned char)bytes[1];

猜你在找的C&C++相关文章