DWORD GetBitField(BYTE* data, DWORD pos, DWORD len, DWORD max) {
return (DWORD)(*(unsigned __int64 *)(data+pos/8)<<(64-len-(pos&7))>>(64-len));
}这是一个函数中的一句,最后这句话我看了半天也不很明白,这是什么意思??函数的功能大概是从data中每次取出len个长度的数据(大概)。主要不明白的是*(unsigned __int64 *)data这个操作。为什么要把BYTE类型的变成__int64类型?这有什么区别,这样子进行后面的移位操作和用BYTE进行移位操作有什么区别??晕哪位可解释一下?
return (DWORD)(*(unsigned __int64 *)(data+pos/8)<<(64-len-(pos&7))>>(64-len));
}这是一个函数中的一句,最后这句话我看了半天也不很明白,这是什么意思??函数的功能大概是从data中每次取出len个长度的数据(大概)。主要不明白的是*(unsigned __int64 *)data这个操作。为什么要把BYTE类型的变成__int64类型?这有什么区别,这样子进行后面的移位操作和用BYTE进行移位操作有什么区别??晕哪位可解释一下?
<< >>为移位符 声明为bytge BYTE移位最快(只能按位移动)感觉这个功能是有加密的功能.