Мне нужно прочитать файл в бинарном виде. Я пытался это сделать так:
<script>
function f_a(){
fs=new ActiveXObject("Scripting.FileSystemObject")
f=fs.OpenTextFile("C:\\W\\qq.gif",1);
x=f.readAll();
f.Close();
te_xt=""
for(i=0;i<x.length;i=i+1){
y=x.charCodeAt(i)
y=y.toString(16)
te_xt+=y+" "}
alert(te_xt)}
</script>
<input type="button" value="f_a" onClick="f_a()">
Этот скрипт правильно работает, только не для любого кода байта. Вот, что нашёл на эту тему в интернете:
==============================================
результат будет правильным, только если значение этого байта не превосходит 0x7f - JScript работает со строками в юникоде и функций для определения ASCII-кода символа в нём нет.
Но если то же самое сделать на VBScript:
Byte=Asc(f.Read(1))
то всё работает правильно (правда, если перед этим не было вызовов SetLocale).
Т.е. можно на VBScript написать функцию ReadByte() и затем вызывать её из JScript-сценария:
<SCRIPT language='VBScript'>
Function ReadByte(File)
ReadByte=Asc(File.Read(1))
End Function
</SCRIPT>
==============================================
К сожалению, я не знаком с VBscript, поэтому сам не разберусь. Нужно прочитать файл в бинарном виде и передать результаты чтения для дальнейшей обработки в переменную в Javascript
Подскажите, пожалуйста, как это можно сделать.
И вот, ещё нашёл:
==============================================
Наверно можно обойтись и одним JScript'ом, если открывать файл как юникодовский и потом отрезать лишний байт. Вот это вроде бы работает.
path="C:\\test\\test.dbf"; // Путь к файлу.
n=12; // Номер байта (считая с нуля).
fso=new ActiveXObject("Scripting.FileSystemObject");
with (fso.OpenTextFile(path, 1, false, true))
Skip(n>>>1), text=Read(1), Close();
byte=(text.charCodeAt(0) & 0xff<<8*(n&1)) >>> 8*(n&1);
WScript.Echo(byte);
-----------------------------
Для вывода результата в 16-ричном виде заменил последнюю строку на
WScript.Echo(byte.toString(0x10).toUpperCase());
==============================================
P.S. Это работает тоже не совсем так, но здесь дана идея открывать файл как юникодовский и отрезать байт.