Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   HexDump файла в виде строки (https://javascript.ru/forum/misc/49590-hexdump-fajjla-v-vide-stroki.html)

Vitamin77 20.08.2014 10:57

HexDump файла в виде строки
 
Всем привет!

Читаю файл как readAsArrayBuffer(file).
Подскажите, как его лучше сконвертировать в строку без потери нулей?
Т.е. строка должна быть вида "00001200340054".

skrudjmakdak 20.08.2014 11:30

а можете показать то что вы сделали? и показать где идет не так как надо

Vitamin77 20.08.2014 12:40

var reader = new FileReader();

reader.onload = function(event)
{
var contents = event.target.result;
var binaryString = '',
bytes = new Uint16Array(contents),
length = bytes.length;
for (var i = 0; i < length; i++)

{
binaryString += String.fromCharCode(bytes[i]);
}

document.getElementById('test').value = binaryString;
console.log (binaryString);
};

Я пытаюсь передать binaryString на сервер через input/post. Но на сервере в итоге эта переменная оказывается undefined.

skrudjmakdak 20.08.2014 13:07

вы случайно не хотите передать файл по частям, если да, то вот ссылка:
https://gist.github.com/shiawuen/1534477

если нет, то могу предположить, что чтото не то с кодировкой

skrudjmakdak 20.08.2014 13:12

кстати а почему 16, если передается бинарник? должно быть 8.
1 байт - 8 бит, но не 16

<html>
	<head>
	</head>
    <body>
		<input type="file">
		<div></div>
        <script>
document.querySelector('input').onchange = function (e)
	{
	var file = e.target.files[0];
	var reader = new FileReader();
	reader.onload = function(e) 
		{
		bytes = new Uint8Array(e.target.result);
		console.log(bytes);
		}
	reader.readAsArrayBuffer(file);
	};
        </script>
    </body>
</html>

ixth 20.08.2014 13:28

Тебе не hex-дамп нужен, а base64. window.btoa().

Aetae 20.08.2014 16:11

Можно тупо текстовой строкой передавать, string может содержать любые символы.


Часовой пояс GMT +3, время: 16:11.