我需要一个函数,它将四个unsigned char变量作为参数,并将它们组合成unsigned int。第一个char变量是int的第一个字节,第二个char是第二个字节,依此类推。这是我到目前为止,它没有正常工作,我无法弄清楚为什么搞乱它并谷歌搜索几个小时。
uint32_t combineChar(unsigned char one, unsigned char two, unsigned char three, unsigned char four){
uint32_t com;
com = (uint32_t)one;
com = com << 8 | (uint32_t)two;
com = com << 8 | (uint32_t)three;
com = com << 8 | (uint32_t)four;
return com;
}
答案 0 :(得分:0)
您的代码依赖于endianess。第一个字节(uint32_t
)在某些系统中是最左边的,在某些系统中是最合适的,所以你可以以与你想要的相反的方式存储字节。
(实际上,如果您只想要uint32_t
,那很好。当您将其与char[4]
或类似的东西结合时会出现问题
答案 1 :(得分:0)
检查“&lt;&lt;”的优先顺序和“|”运算符。
uint32_t combineChar(unsigned char one, unsigned char two
, unsigned char three, unsigned char four){
return one | (two << 8) | (three << 16) | (four <<24);
}