float f=3.14f;
int i=(int)f;
char c=(char)i;至于为什么bout.size()的返回值变化,那是因为它返回的是ByteArrayOutputStream的缓冲区的大小,可能是根据需要其容量在变化。

解决方案 »

  1.   

    to cherami:
    我不太明白您的做法,这样的话int整数的精度不就丢失了吗?我要的是一个int转换位4个字节的byte,而不是一个字节。
      

  2.   

    ByteArrayOutputStream bout = new ByteArrayOutputStream();
    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 的。
      

  3.   

    int TO byte[]是这样的:    int j=12345;
       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)不知是干什么的?
      

  4.   

    hahaha88(忧郁的眼神,稀嘘的胡子喳)的方法高!!!
      

  5.   

    5555~~
    偶的方法也不错啊。:(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();
      

  6.   

    写 WORD:
    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);
      

  7.   

    好方法!哈哈哈哈哈广义来说,可以用ObjectOutputStream把一个Object拆成byte[]
    (Serializable/Externalizable)
      

  8.   

    使用DataOutputStream的方法好像可行,但有个什么网络字节顺序bigEding或者smallEding如何设定,好像在哪里看到过,忘记了,请大家帮忙?
      

  9.   

    DataOutputStream 的 write 方法是按网络字节顺序(从高到低)写数据的。
      

  10.   

    没法设吧?
    至少在 DataOutputStream 里面。还有 网络字节顺序 是由 TCP/IP 协义规定的。