2010-06-03 23 views
6

La respuesta generalmente aceptada es que no se puede. Sin embargo, existe una creciente evidencia de que esto no es cierto en función de la existencia de proyectos que leen en tipos de datos que no son tipos básicos de HTML. Algunos proyectos que hacen esto son la versión de JavaScript de ProtoBuf y Smokescreen.¿Cómo se accede a la información de nivel de bytes en JavaScript?

Smokescreen es un intérprete flash escrito en JS, por lo que si no es posible obtener directamente los bytes, ¿cómo funcionan estos proyectos? La fuente para Smokescreen se puede encontrar here. Lo he revisado, pero con JS no siendo mi idioma principal en este momento, la solución se me escapa.

+0

No sé lo que su fuente se parece, pero se puede hablar fácilmente a parpadear con Javascript y dejar que haga lo que no puede JS – baloo

Respuesta

1

Ambos parecen estar utilizando un String (en este caso el responseText de XMLHttpRequest) directamente como una colección de bytes.

data = ... // a binary string 
bytes = []; 
for (i = 0; i < data.length; i++) 
{ 
    // This coverts the unicode character to a byte stripping 
    // off anything past the first 8 bits 
    bytes[i] = data.charCodeAt(i) & 0xFF; 
} 
+1

Esto, desafortunadamente, no funciona correctamente en todos los navegadores y codificaciones sobre todo ... porque incluso el uso de una codificación aparentemente simple (ISO-8859-1, también conocido como Latin-1, que debería ser un subconjunto adecuado de 8 bits de Unicode) en realidad no le proporciona el mapeo directo esperado. – StaxMan

0

Protobuf hace toda su magia en un campo XMLHttpRequest.requestText, que es solo un DOMString.

Cuestiones relacionadas