我对此并不熟悉,所以我将首先说,当我查看一些代码时,我意识到这个函数对我来说没有一点意义。将unsigned char转换为int并简写为
正如你可以看到这个特定的函数使用位运算符转换4个无符号的字符元素融入整数。
//四个字符的数组转换为整数,使用小端形式
int toInt(const char* bytes) {
return (int)(((unsigned char)bytes[3] << 24) |
((unsigned char)bytes[2] << 16) |
((unsigned char)bytes[1] << 8) |
(unsigned char)bytes[0]);
}
short toShort(const char* bytes) {
return (short)(((unsigned char)bytes[1] << 8) |
(unsigned char)bytes[0]);
}
我已经知道如何按位运算符和炭如何使用1个字节和INT使用4个字节。为什么要将char位移动到左边,而不是将其明确地转换为int将它转换为int? 为什么这个函数需要按位运算符?
这个功能超出了我的理解,请解释一下这个代码,它是如何工作的,或者至少给我一个链接,throughly解释这一点。
我到处寻找解释,但无法找到它。
这可能有一个足够简单的解释。
使用operator <<上的类型比INT短自动促进输入到一个int。最终的int投射是不必要的。 – 2014-11-22 02:25:52