Irvine 1.3.1.127 & DMScript 0.3.12
var http = new HTTP ();
http.request ('GET', 'http://www.google.co.jp/favicon.ico');
http.response ();
var data = http.read();
var f = new File('test1234.ico');
f.open ('w');
f.write (data);
f.close ();
alert ("http.length = " + http.length
+ "\nhttp.read() length = " + data.length
+ "\nFile.write() length = " + f.length);
http.read() の返り値(string 型)の .length が小さいことがあるのは、データのバイト数ではなくマルチバイト文字列(Shift_JIS?)として解釈した場合の文字数だからのようです。
http.read().charCodeAt(~) も、マルチバイト文字だった場合 0x100 以上の値を返してきます。
読み込んだデータをバイト単位で読み書きしたい場合は StringBuffer 型に変換すればいいらしいです。