float f=3.14f;
int i=(int)f;
char c=(char)i;至于为什么bout.size()的返回值变化,那是因为它返回的是ByteArrayOutputStream的缓冲区的大小,可能是根据需要其容量在变化。
int i=(int)f;
char c=(char)i;至于为什么bout.size()的返回值变化,那是因为它返回的是ByteArrayOutputStream的缓冲区的大小,可能是根据需要其容量在变化。
我不太明白您的做法,这样的话int整数的精度不就丢失了吗?我要的是一个int转换位4个字节的byte,而不是一个字节。
System.out.println("Stream size length is: " + bout.size());
//size大小为0// okbout.reset();
ObjectOutputStream out = new ObjectOutputStream(bout);
System.out.println("Stream size length is: " + bout.size());
//size变为4(为什么?)ObjectOutputStream 在初始化的时候,会在流前面加一个四字节的标识,以后用 ObjectInputStream 读的时候,也要先读这个标识的,所以这里的 size 为 4。out.writeInt(i);
System.out.println("Stream size length is: " + bout.size());
//size为4 这里你还没有 flush,所以 size 为 4,一般你在 close() 的时候,会自动帮你 flush。out.flush();
System.out.println("Stream size length is: " + bout.size());
//size变为10(为什么?)int 占四个字节,剩下的两个字节,我猜测也是存放的标识符吧,用来告诉后来的 ObjectInputStream 这接下来的字节表示的是一个 int.byte[] tempByteArray = new byte[bout.size()];
tempByteArray = bout.toByteArray();////////////////////////////////////不过写 int 或 double 可以用 DataOutputStream 的。
byte[] bA=new byte[5];
bA[0]= (byte)((j & 0x000000FF));
bA[1]= (byte)((j & 0x0000FF00) >> 8);
bA[2]= (byte)((j & 0x00FF0000) >> 16);
bA[3]= (byte)((j & 0xFF000000) >> 24);
float TO byte[]bu不知道:
Float.floatToIntBits(float value)
Float.floatToRawIntBits(float value)不知是干什么的?
偶的方法也不错啊。:(int i = 2;
float f = 2.0;
double d = 2.0ByteArrayOutputStream btOut = new ByteArrayOutputStream();
DataOutputStream dataOut = new DataOutputStream(btOut);
dataOut.writeInt(i);
dataOut.writeFloat(f);
dataOut.writeDouble(d);
dataOut.flush();byte btArr = btOut.toByteArray();
int v = 1;out.write((v >> 0) & 0xFF);
out.write((v >> 8) & 0xFF);写 DWORD:
int v = 1;out.write((v >> 0) & 0xFF);
out.write((v >> 8) & 0xFF);
out.write((v >> 16) & 0xFF);
out.write((v >> 24) & 0xFF);
(Serializable/Externalizable)
至少在 DataOutputStream 里面。还有 网络字节顺序 是由 TCP/IP 协义规定的。