Estoy usando DataOutputStream para escribir a un archivo, sin embargo quiero cambiar el endiosamiento de los datos.

Esta es la forma en que estoy escribiendo los datos de byte en el archivo (se emite en Little endian por defecto)

public void generateBinObjFile(String outputFile)
    try {
        //Create file

        DataOutputStream stream = new DataOutputStream(
                new FileOutputStream(outputFile));

        stream.writeShort(this.quantize(this.xComponents.get(index), //<-- Short is written in little Endian
                    this.min_x, this.max_x) - 32768);

        } //catch statements here

Es hay alguna manera de definir el Endian de cómo byte de datos está escrito en Java?

InformationsquelleAutor deztructicus | 2011-08-11

5 Comentarios

  1. 11

    No se puede hacer esto con DataOutputStream, que siempre utiliza big endian.

    Que puede utilizar un ByteBuffer en el que se puede llamar fin() para influir en cómo se lee y escribe datos.

    Puede utilizar el ByteBuffer ya sea para preparar un byte[] que voy a escribir con un clásico OutputStream más tarde o se destinarán íntegramente a NIO y el uso de cualquier WritableByteChannel para la escritura

    • dice «no se puede crear una instancia del tipo ‘ByteBuffer’ «.Estoy usando la palabra clave new para crear un objeto de la misma, existe una o más correcta forma de crear una instancia de un objeto?
    • compruebe el JavaDoc que he ligado, por favor.
    • Usted puede utilizar ByteBuffer.allocateDirect(int size)
  2. 0

    Usted no puede:

    Escribe un corto a la base del flujo de salida como dos bytes, el byte alto primero.

    Todos los «multi-byte» métodos de trabajo como la que.
    Si usted necesita la otra manera alrededor, usted necesita para escribir bytes sí mismo.

  3. 0

    Que las salidas de los datos en una forma que sea legible por DataInputStream.

    Si usted tiene que preocuparse por el peso, no debe ser el uso de Datos*Stream.

  4. 0

    todas las respuestas posibles son a la derecha. Usted puede, sin embargo, la fuente de DataOutputStream, pegarlo en una nueva clase, e invertir el orden de los bytes en los diversos writeShort, writeLong etc.. (o, al menos, en los que se necesita). No es un trabajo difícil.

    Es obvio que no puede, a continuación, utilizarlo para comunicarse con un DataInputStream en el otro lado, pero supongo que usted necesita para escribir en un archivo de socket o con un programa en C en el otro lado, así que usted no necesita un DataInputStream.

Dejar respuesta

Please enter your comment!
Please enter your name here