70,023
社区成员




void translateInBuff(byte[] pInputBuf, int tOffset,int tInputU32) {
pInputBuf[tOffset]=(byte)(tInputU32);
pInputBuf[tOffset+1]=(byte)(((tInputU32)&0x0000ff00)>>8);
pInputBuf[tOffset+2]=(byte)(((tInputU32)&0x00ff0000)>>16);
pInputBuf[tOffset+3]=(byte)(((tInputU32)&0xff000000)>>24);
}
通过这个函数,在java里面可以将一个int形数据放入byte数组里面
比如我传入一个 25117
函数调用后
byte[] pTempArray=new byte[4];
int tTempRet;
translateInBuff(pTempArray,0,25117);
pTempArray这个byte的数组里面存放的就是 0x621d 刚好就是10进制的25117
函数内部大概原理我了解:
void translateInBuff(byte[] pInputBuf, int tOffset,int tInputU32) {
pInputBuf[tOffset]=(byte)(tInputU32); //这里直接截断,留下了低8位
//这里有点迷糊,我自己换算成2进制,然后按照ff00按位与,然后右移了8位,的确就是之前整形的另外8位。
//那么,为什么用0x0000ff来与呢,而不是 0x0000ee或者0x0000dd来与呢。。
pInputBuf[tOffset+1]=(byte)(((tInputU32)&0x0000ff00)>>8);
pInputBuf[tOffset+2]=(byte)(((tInputU32)&0x00ff0000)>>16);
pInputBuf[tOffset+3]=(byte)(((tInputU32)&0xff000000)>>24);
}