日期:2014-05-20  浏览次数:20790 次

rms存储如何存储int数组数据
我想存储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();
有什么用呢?