关于 JS 读取 byte 数据的问题.

wcwtitxu 2007-11-30 03:45:23

var stream = new ActiveXObject("Adodb.Stream");
stream = new ActiveXObject("Adodb.Stream");
stream.Mode = 3
stream.Type = 1
stream.Open();
stream.LoadFromFile("F:\\data.mdt");
stream.Position = 0;

// 我想从流中读取 1 字节的数据, 但 JS 没有 byte 类型,要怎么处理,我要的是数值.
var c = stream.Read(1);

// 做过以下尝试:
WScript.Echo(c); // 弹出字符 'm'
WScript.Echo(c + "ff"); // 弹出 'm'
WScript.Echo("ff" + c); // 弹出字串 "ff"
WScript.Echo(typeof(c)); // 弹出 unknow
WScript.Echo(("" + c).charCodeAt(0)); // 弹出 -1.#ind, 这个 "-1.#ind" 是什么东东,希望也解释下.
WScript.Echo(c.charCodeAt(0)); // 报错 缺少对象
WScript.Echo((c + "").charCodeAt(0)); // 报错 缺少对象

// 而我希望得到的是字值 109;
// 要怎么才能拿到.
// 先谢谢大家了.

...全文
1697 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wcwtitxu 2007-12-04
  • 打赏
  • 举报
回复
多谢 gziablo 指点.
问题已解决,解决方法如下:

function alert(s) {
WScript.Echo(s);
}

var stream = new ActiveXObject("Adodb.Stream");
stream.Mode = 3;
stream.Type = 2; // 文本
stream.Open();
stream.LoadFromFile("F:\\data.mdt");
stream.CharSet = "Unicode";
var content = stream.ReadText(); // 将文件内容当成 Unicode 字符串全部读出
stream.Close();


// 读取一 byte 数据, 参数 pos 是位置;
function readAByte(pos) {
var uPos = parseInt(pos / 2);
var i = content.charCodeAt(uPos);
i = ((pos % 2)==0 ? i&0xFF : i>>>8); // 因一个 Unicode 字符有 2 Byte 当 pos 为偶数时取低位,否则取高位.
return i;
}
var pos = 0;
alert(readAByte(pos++));
alert(readAByte(pos++));
alert(readAByte(pos++));



目前就这么做,结贴.
gzdiablo 2007-12-04
  • 打赏
  • 举报
回复
adodb.stream.read()返回的是单个二进制数据 你要一次性读取4或8个二进制才能组成一个数字或文字.
当然你可以用readtext()方法来获取指定长度的文本
wcwtitxu 2007-12-03
  • 打赏
  • 举报
回复
我顶上去, 还没解决, 高手请赐教.
cloudgamer 2007-11-30
  • 打赏
  • 举报
回复
还真没用过
wilowind 2007-11-30
  • 打赏
  • 举报
回复
<script type="text/javascript">
var a = "m";
alert(a.charAt(0).charCodeAt());
</script>
zheng-zx 2007-11-30
  • 打赏
  • 举报
回复
帮顶一下
wcwtitxu 2007-11-30
  • 打赏
  • 举报
回复
我这个不是网页中的脚本,我是双击 js 文件直接运行的那种,用来操作本地文件的.
c 是 1 byte 的数据.
WScript.Echo(c.charAt(0).charCodeAt(0)); 同样提示缺少对象

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧