如何将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]; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |