Javascript ArrayBuffer-无法将null值设置为ArrayBuffer
结果:Javascript ArrayBuffer-无法将null值设置为ArrayBuffer,javascript,web-worker,arraybuffer,Javascript,Web Worker,Arraybuffer,结果: 0 预期: null 如何设置空/空数据?我们有办法检查arraybuffer中的空数据吗 例如:我们有一个包含如下数据的csv文件: 0,1,0 非常感谢(我的重点): ArrayBuffer对象用于表示通用的固定长度 原始二进制数据缓冲区 也就是说,ArrayBuffers只保存二进制(数字)值。因此,DataView API只允许您设置浮点值或整数值null不是一个数字。这是JS的一个 您可以在EcmaScript规范中进一步看到这一点,在抽象操作的步骤4中 断言:类型(值)是数字
0
预期:
null
如何设置空/空数据?我们有办法检查arraybuffer中的空数据吗
例如:我们有一个包含如下数据的csv文件:
0,1,0
非常感谢(我的重点):
ArrayBuffer对象用于表示通用的固定长度
原始二进制数据缓冲区
也就是说,ArrayBuffers只保存二进制(数字)值。因此,DataView API只允许您设置浮点值或整数值<但是,code>null不是一个数字。这是JS的一个
您可以在EcmaScript规范中进一步看到这一点,在抽象操作的步骤4中
断言:类型(值)是数字。“但是,规范没有定义如何处理非数字类型。有人可能会说,在这种情况下应该抛出一个TypeError
,但我检查的所有实现(Chrome、Safari、Firefox、Node.js)都悄悄地将值转换为零。。。这就是你看到的。如果传递字符串
,日期
,正则表达式
,布尔值
,或未定义
,则会得到相同的行为
(如果你传递了一个
BigInt
或符号
,你似乎得到了一个TypeError…奇怪。)ArrayBuffer
基本上表示一个固定大小的内存块。该数组中的各个字节可以是0
,但其中不可能有null
值。当我们解析csv数据时,如何设置空值,,,冷却并传输其数据?@TayDong:字节值的数量是固定的。也就是说,总有16个字节的值。i、 e.16个值,每个值介于0和255之间。在这种情况下,“空”应该是什么?当您阅读0时,可以将其解释为“空”,但这意味着您不能再表示数值0。谢谢Joachim Sauer。如果我们将0标记为空,则会造成混乱。如果数据为0,1,0,cool
,会发生什么情况。这意味着我们可以显示0,null/empty您打算如何将“cool”
部分写入/编码到只接受数字的数组中?如果你的答案是charCodes,那么你如何区分cool,stuff
和coolstuff
。或者换句话说,如何确定列的边界?一点也不奇怪,实现确实在值上调用了toNumber,因此toNumber(bigininstance)将抛出,而toNumber(null)将返回0
。顺便说一句,可能需要注意的是,truthy值将因此被转换为1
。
// Creating an ArrayBuffer with a size in bytes
var buffer = new ArrayBuffer(16);
// Creating views
var view1 = new DataView(buffer);
// Putting 1 in slot 0
view1.setInt8(0, null);
console.log(view1.getInt8(0));