Тема: JScript Шестнадцатеричное представление файла
Как продолжение темы
if (WScript.FullName.toLowerCase().indexOf("cscript.exe") < 0) {
var wsh = WScript.CreateObject("WScript.Shell");
wsh.Run ("CScript.exe " + "\"" + WScript.ScriptFullName + "\"");
WScript.Quit();
}
eh = function (t) {WScript.Echo(t)}
stream = new ActiveXObject("ADODB.stream");
FILE_TO_READ = 'bin.dat';
//=========================== Копипаст от сих
stream.Type = 2;
stream.Charset = 'ISO-8859-1'; // Если эту строку удалить, то будет неправильный результат. Почему?
stream.Open();
stream.LoadFromFile(FILE_TO_READ);
stream.Position = 0;
stream.Charset = 'ascii';
stream.Position = this.position;
s1 = stream.ReadText();
stream.Position = 0;
stream.Charset = 'iso-8859-1';
stream.Position = this.position;
s2 = stream.ReadText();
stream.Close();
//=========================== До сих
cap = "Offset (h)\t";
for (i = 0; i < 16; i++) {
cap += ("0" + i.toString(16)).slice(-2).toUpperCase() + " ";
if (i == 7) cap += " ";
}
eh (cap)
str = ""
for(var i = 0; i < s1.length; i++){
if ((i == 0) || !(i % 16)) {
eh (str);
str = " " + ("0000000" + (i).toString(16)).slice(-8).toUpperCase()+ ":\t"
}
str += ('0'+(s1.charCodeAt(i)|(s2.charCodeAt(i)<0x80?0:0x80)).toString(16)).slice(-2).toUpperCase() + " ";
if ((i != 0) && !((i+1) % 8)) {str += " "}
}
WScript.StdIn.Read(1);
WScript.Quit()
Выводит файл из переменной FILE_TO_READ в шестнадцатеричном виде в консоль.
Прошу раскритиковать в пух и прах.
Кусок кода, который нашел в просторах интернета (помечен в комментариях скрипта), мне не до конца понятен.
Тому кто сможет вкратце рассказать, почему он делает то, что делает заранее большущее спасибо.
Например строка "stream.Charset = 'ISO-8859-1'" вообще непонятно для чего нужна.