下面的一段代码是用来将byte[]转为int数值的,在里面我用注释标记了两个问题:
1. 为什么startIndex是4的整数倍就可以用下面这种方式得到int值?
2. *((int*)pbyte) 这句代码具体做了哪些操作?数据发生了哪些变化?
希望有大佬给解释一下,谢谢!
// 将字节数组转换为int
int bytesToInt32(char value[], int startIndex)
{
char* pbyte = &value[startIndex];
if (startIndex % 4 == 0) // data is aligned
{
// 为什么startIndex是4的整数倍就可以用下面这种方式得到int值?
// *((int*)pbyte) 这句代码具体做了哪些操作?数据发生了哪些变化?
return *((int*)pbyte);
}
else
{
return (*pbyte) | (*(pbyte + 1) << 8) | (*(pbyte + 2) << 16) | (*(pbyte + 3) << 24);
}
}