El método readInt de Java devuelve el valor LittleEndian en lugar del valor BigEndian de Int en Scala

Estoy usando Kryo para deserializar una clase originalmente serializada en Spark. Kryo escribe todas sus primitivas en formato BigEndian, pero cuando trato de deserializar los valores en otra máquina, el valor se devuelve como si fuera LittleEndian.

Método subyacente en Kryo:

public int readInt () throws KryoException {
    require(4); // Does a basic positionality check that passes in this case
    byte[] buffer = this.buffer;
    int p = this.position;
    this.position = p + 4;
    return buffer[p] & 0xFF //
        | (buffer[p + 1] & 0xFF) << 8 //
        | (buffer[p + 2] & 0xFF) << 16 //
        | (buffer[p + 3] & 0xFF) << 24;
}

Esto devuelve el valor 0x70000000. Pero cuando mi programa (en Scala) usa el readBytemétodo de Kryo :

public byte readByte () throws KryoException {
    if (position == limit) require(1);
    return buffer[position++];
}

y lee los bytes individualmente, así:

  val a = input.readByte()
  val b = input.readByte()
  val c = input.readByte()
  val d = input.readByte()
  val x = (a & 0xFF) << 24 | (b & 0xFF) << 16 | (c & 0xFF) << 8 | d & 0xFF

Entonces obtengo 0x70 para x. No entiendo lo que está pasando aquí. ¿Es algún tipo de problema de conversión entre Scala y Java, o algo relacionado con Kryo y la matriz de bytes subyacente?

Respuesta 1

Tengo tres clases diferentes: 1-) clase abstracta A {resumen vacío uno (); anular dos () {System.out.println ("dos"); uno(); } resumen vacío three (); } 2-) la clase abstracta B extiende A {nula () ...

Tengo algunos problemas para usar mySQL y Spring JDBCTemplate. Tengo un INSERT ... ON DUPLICATE KEY UPDATE que incrementa un contador, pero usa el truco LAST_INSERT_ID () para devolver el nuevo valor en el ...

Estoy tratando de ejecutar mi archivo de características. Ejecutar como función de pepino en Eclipse. Pero recibo un error. Cuando estoy tratando de ejecutar la clase Runner (con pepino JVM + JUnit). Está funcionando bien. Nota :- ...

¿Qué sucedió si no hay valor para algunos campos de clase en el archivo xml durante la desagregación JAXB? ¿JAXB simplemente "omitió" este valor y los dejó sin inicializar?