Quiero leer un archivo binario en JavaScript que iba a ser recibido a través de XMLHttpRequest y ser capaz de manipular los datos. A partir de mi investigación he descubierto este método de lectura de un archivo binario de datos en una matriz

var xhr = new XMLHttpRequest();
xhr.open('GET', '/binary_And_Ascii_File.obj', true);

xhr.responseType = 'arraybuffer';

xhr.onload = function(e) {
  var uInt8Array = new Uint8Array(this.response);
};

¿Cómo puedo convertir este binario matriz de datos a un formato legible-cadena?

XMLHttpRequest.responseType "arrayBuffer" is not supported. en Chrome.
Esta pregunta puede ayudar a los demás: stackoverflow.com/questions/6965107/…

OriginalEl autor deztructicus | 2011-08-09

2 Comentarios

  1. 8

    Estoy seguro de que usted encontrará útil esta información: http://jsdo.it/tsmallfield/uint8array.

    Haga clic en javascript ficha.
    Allí aparecerá el código para convertir el Uint8Array en una cadena. El autor muestra 2 método:

    • La primera es acerca de la creación de una vista.
    • La segunda compensación de bytes.

    EDICIÓN: informe el código de integridad

    var buffer = new ArrayBuffer( res.length ), //res is this.response in your case
        view   = new Uint8Array( buffer ),
        len    = view.length,
        fromCharCode = String.fromCharCode,
        i, s, str;    
    
    /**
     *  1) 8bitの配列に入れて上位ビットけずる
     */
    str = "";
    
    for ( i = len; i--; ) {
      view[i] = res[i].charCodeAt(0);
    }
    
    for ( i = 0; i < len; ++i ) {
      str += fromCharCode( view[i] );
    }    
    
    /**
     *  2) & 0xff で上位ビットけずる
     */
    str = "";
    
    for ( i = 0; i < len; ++i ) {
      str += fromCharCode( res[i].charCodeAt(0) & 0xff );
    }

    OriginalEl autor user278064

  2. 7
    function load_binary_resource(url) {
      var byteArray = [];
      var req = new XMLHttpRequest();
      req.open('GET', url, false);
      req.overrideMimeType('text\/plain; charset=x-user-defined');
      req.send(null);
      if (req.status != 200) return byteArray;
      for (var i = 0; i < req.responseText.length; ++i) {
        byteArray.push(req.responseText.charCodeAt(i) & 0xff)
      }
      return byteArray;
    }

    Ver https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data para más detalles

    x debería ser yo. Aunque, no puedo editar un único carácter.

    OriginalEl autor Phyxx

Dejar respuesta

Please enter your comment!
Please enter your name here