我想将二进制数据注入到JavaScript中的对象中.有没有办法做到这一点?
即
var binObj = new BinaryObject('101010100101011');
这样的效果.任何帮助都会很棒.
你可以使用parseInt:
var bin = parseInt('10101010', 2);
第二个参数(基数)是输入的基础.
这里解释了这个二进制ajax库,还有另一个可以处理更多数据类型的二进制解析器库.
您还可以查看具有二进制Blob对象的 Google Gears,或者查看为Flash提供javascript包装,它提供了本机ByteArray实现.
或者......你可以坐下来等待并希望所有这些都成为标准 :)
在所有最近的浏览器上,你可以做:
xhr.overrideMimeType('text/plain; charset=x-user-defined');
并检索一个字符串.要获得二进制结果,您必须这样做
data.charCodeAt(pos) & 0xff;
在Firefox和Chrome的每晚构建中,您可以将值检索为ArrayBuffer
xhr.responseType = "arraybuffer";
然后可以在那里访问结果
xhr.mozResponseArrayBuffer // Firefox xhr.response // Chrome
然后,您可以在缓冲区上应用TypedArray(例如:Int32Array)或DataView来读取结果.
为了简化这个过程,我创建了一个jQuery Patch来支持二进制类型和一个使用浏览器最新可用读取功能的DataView Wrapper.
JavaScript几乎不支持原始二进制数据.一般来说,最好是在这个限制范围内生活.但是,我正在考虑尝试一个涉及操作巨大位图来在OLAP数据库中进行集合操作的项目. 这在IE中不起作用.
基本思想是:将二进制数据强制转换为PNG以将其发送到JavaScript.例如,位图可能是黑白PNG,黑色是100%透明.然后使用Canvas操作进行按位数据操作.
所述HTML5画布包括像素阵列型,从中可以访问字节的图像.Canvas还支持合成操作,例如XOR.变亮和变暗应该能够做AND和OR.这些操作可能会在任何支持它们的浏览器中得到很好的优化 - 可能使用GPU.
如果有人试图这样做,请让我知道它的运作情况.