我想存储4个int型的数组,现在不知道该怎么存了,数组里面的数据都超过了byte的范围。请高人指点迷津。
------解决方案--------------------------------------------------------
把一个int分成4个byte存储
------解决方案--------------------------------------------------------
构造一个ByteArrayOutputStream
转为DataOutputStream
依次writeInt()进去
将ByteArrayOutputStream转为byte[],存入rms
对应读取:
读取byte[],转为ByteInputStream,转为DataInputStream
依次readInt()
------解决方案--------------------------------------------------------
String方式存入,例入3000存为 "3000 ",取出后也是String,再用Integer.parseInt( "3000 ");变为整数.
------解决方案--------------------------------------------------------
存string最方便。
------解决方案--------------------------------------------------------
yanhan0615(炮炮) ( ) 信誉:100 Blog 2007-1-2 11:30:41 得分: 0
把一个int分成4个byte存储
这个方法还是很好用的.
把一个int 同过> > 操作,分成4 个byte 存取都很方便.
------解决方案--------------------------------------------------------
自己转换格式
或者使用流
------解决方案--------------------------------------------------------
dataOutputStream.writeInt(int i);
dataInputStream.readInt();
------解决方案--------------------------------------------------------
用String会很麻烦吗,不觉得啊
------解决方案--------------------------------------------------------
ByteArrayOutputStream baops = new ByteArrayOutputStream();
DataOutputStream outputStream = new DataOutputStream(baops);
outputStream.writeInt();
------解决方案--------------------------------------------------------
public static byte[] int2Byte(int n) {
return new byte[] { (byte) ((n > > 24) & 0xff),
(byte) ((n > > 16) & 0xff), (byte) ((n > > 8) & 0xff),
(byte) (n & 0xff) };
}
------解决方案--------------------------------------------------------
有2种方法.
1.先对int进行编码
ByteArrrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream();
dos.writeInt(i);//i就是你的整型数据
byte[] result = null;
result = baos.toByteArray();
用的时候解码:
ByteArrayInputStream bais = new ByteArrayInputStream();
DataInputStream dis = new DataInputStream();
int i = dis.readInt();
2.
byte[] b = new byte[4];(Int是32位)
b[0] = (byte)(0xff & (i > > 24));
b[1] = (byte)(0xff & (i > > 16));
b[2] = (byte)(0xff & (i > > 8));
b[3] = (byte)(0xff & (i > > 0));
------解决方案--------------------------------------------------------
最好不建议使用string,如果你存的既有int又有short又有string又有byte[],岂不麻烦...
------解决方案--------------------------------------------------------
byte[] result = null;
result = baos.toByteArray();
有什么用呢?