Javascript 为什么TypedArray.prototype.set()不';你没有理由支持持久性吗? 在MDN手册中,DataView.prototype.setInt16()语法为:

Javascript 为什么TypedArray.prototype.set()不';你没有理由支持持久性吗? 在MDN手册中,DataView.prototype.setInt16()语法为:,javascript,Javascript,DataView.prototype.setInt16(字节偏移量,值[,littleEndian]) 在MDN手册中,DataView.prototype.setInt16()语法为: Int16Array.prototype.set(数组[,偏移量]) Int16Array.prototype.set(类型Darray[,偏移量]) 这里,littleEndianarg出现在dataview.setInt16()中,用于指定Endianess的行为。但是Int16Array.prototy

DataView.prototype.setInt16(字节偏移量,值[,littleEndian])


在MDN手册中,DataView.prototype.setInt16()语法为: Int16Array.prototype.set(数组[,偏移量])
Int16Array.prototype.set(类型Darray[,偏移量])

这里,
littleEndian
arg出现在
dataview.setInt16()
中,用于指定Endianess的行为。但是
Int16Array.prototype.set
func没有任何参数来指定Endianess的行为


因为两个func都是二进制视图,为什么它们之间有区别??
我应该如何使用
Int16Array.prototype.set
?修改endianness
Int16Array
将始终使用系统的本机endianness。因此,
set
必须在本机endianness中设置,不能更改

要使用不同的endianness设置
,可以使用如下内容:

const create\u data\u view=typed\u array=>new DataView(
类型化的数组.buffer,
键入的数组字节偏移量,
键入的_数组
);
const set_int16_与_endian=(类型化的_数组、值、偏移量、小的_endian=false)=>{
创建\数据\视图(类型化\数组).setInt16(偏移量*类型化\数组.BYTES \每个\元素,值,小\字节);
}
const get_int16_与_endian=(键入的_数组,偏移量,little_endian=false)=>{
创建\数据\视图(类型化\数组).getInt16(偏移量*类型化\数组.BYTES \每个\元素,小\字节);
}
但是现在,您必须使用这些辅助函数以相同的endianness进行阅读

例如,在我的系统上

const a=新的Int16Array([1,2,3]);
用_endian(a,5,1,false)设置_int16_;
console.log(a[1]);//1280,因为字节顺序已交换

我知道如何处理endianess。你不认为在类型化数组中创建函数是一种很好的方法吗。只需在其中使用reverse func。所以,我的问题是,为什么会有这种差异,为什么会有一些内部函数来实现它呢???@AnonymousUser264,因为它总是使用系统的本机端性。
DataView
不关心对齐方式或字节顺序,因此您甚至可以写入
int16
1字节,但
Int16Array
类似于
short[]
,因此您只能以2字节的倍数和本机字节顺序写入。