JS/VBS配合Adodb.Stream处理字节数据/输出二进制文件

本文探讨了如何使用JavaScript(JS)和Visual Basic Script(VBS)配合Adodb.Stream对象处理字节数据,尤其是如何在Windows环境中生成二进制文件。在JS中,通过创建字符串或将字节数组转换为字符串,然后写入编码为'Unicode'的Stream对象。在处理字节顺序、奇数长度数据和BOM问题后,实现了数据的正确写入。而在VBS中,通过设置Stream类型为文本,编码为'iso8859-1',利用ChrW()函数处理0-255的数据,简化了处理过程。这种方法虽然可能增加内存消耗,但在小规模数据处理时效率尚可。
摘要由CSDN通过智能技术生成

一开始,我曾想到将字节数据转换为JS字符串,每两个字节一组转换为一个字节,然后写入类型为文本、编码为“Unicode”的Adodb.Stream对象。

这样做有下面这些问题,但各有方法解决:

首先,将字节数据转换为双字节字符必须要考虑高低位字节顺序(Byte Order)的问题。关系到JS字符串字节顺序的到底是硬件还是软件,目前我还无从得知。不过在目前一般Windows的IE/JScript 5.7中,JS字符串是高位在前低位在后(little endian)。解决方法:在字节对转换成字符前,先将高低字节数据调换。

其次,当字节数据的长度为奇数时,必然存在最后不够凑齐一对字节转换为字符的问题。解决方法:可以先在数据尾部任意补充一个字节,待数据写入Stream对象之后,再将Stream对象转换为二进制类型并移除最后一个字节。

再者,Adodb.Stream在的编码为Unicode时,会自动在文本流的开始位置加入两个字节的BOM(Byte Order Mark)。解决方法:将已经写入数据的Stream类型转换为二进制,此时从第3个字节起读出的所有数据即为我们需要的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值