62,614
社区成员
发帖
与我相关
我的任务
分享
InputStream is=socket.getInputStream();
DataInputStream dis=new DataInputStream(is);
int v=dis.readInt();//这里会一次性消耗4个byte,按网络字节序组装成一个int类型
long l=dis.readLong();//同理
你做过C的,网络字节序和CPU字节序我就不解释了
public static void main(String[] args) {
byte [] b = {1,2,3};
int [] a = new int[3];
for (int i = 0; i < b.length; i++) {
a[i] = b[i];
}
for (int i : b) {
System.out.println(i);
}
}
敢问上面讨论那么多没用的同学一个问题,byte是不是数字类型,小转大需要这么复杂?public int[] bytesToInts(byte[] bytes){
int bytesLength=bytes.length;
int[] ints=new int[bytesLength%4==0? bytesLength/4:bytesLength/4+1];
int lengthFlag=4;
while (lengthFlag<=bytesLength){
ints[lengthFlag/4-1]=(bytes[lengthFlag-4]<<24)|(bytes[lengthFlag-3]&0xff)<<16|
(bytes[lengthFlag-2]&0xff)<<8|(bytes[lengthFlag-1]&0xff);
lengthFlag+=4;
}
for (int i=0;i<bytesLength+4-lengthFlag;i++){
if (i==0) ints[lengthFlag/4-1]|=bytes[lengthFlag-4+i]<<8*(bytesLength+4-lengthFlag-i-1);
else ints[lengthFlag/4-1]|=(bytes[lengthFlag-4+i]&0xff)<<8*(bytesLength+4-lengthFlag-i-1);
}
return ints;
}
上代码,求分