将整形数转换为byte数组的一点疑问
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);
}
...全文
相关推荐
整形数组与字符数组相互转换
注意:源程序是为qt写的,不过基本上都用的是c语言,下载之后稍作修改就可以在vc++上运行。将int数组转成uchar数组保存到数据库,然后再取出来将uchar数组还原成int数组。
定义20个元素的整形数组赋值。输入一个数如果该数在数组中存在,删除该数。
定义20个元素的整形数组赋值。输入一个数如果该数在数组中存在,删除该数。其后的每个数前移一位。最后补0;
浅谈java中字符串数组、字符串、整形之间的转换
主要介绍了浅谈java中字符串数组、字符串、整形之间的转换,具有一定参考价值,需要的朋友可以了解下。
go语言中int和byte转换方式
主要介绍了go语言中int和byte转换方式,需要的朋友可以参考下
C#字符串数组转换为整形数组的方法
主要介绍了C#字符串数组转换为整形数组的方法,涉及C#数组遍历与转换的相关技巧,需要的朋友可以参考下


