我在服务器端(c#)有一个整数变量a
:
int a = 65512;
当我将其转换为short类型时:(short)a
等于-24
我希望在客户端(javascript)上进行此转换
我尝试首先将其转换为二进制:a.toString(2)
,然后执行a.toString(2) & 0xFF
,但无效
如何在javascript端将数字强制转换为short类型?
我在服务器端(c#)有一个整数变量a
:
int a = 65512;
当我将其转换为short类型时:(short)a
等于-24
我希望在客户端(javascript)上进行此转换
我尝试首先将其转换为二进制:a.toString(2)
,然后执行a.toString(2) & 0xFF
,但无效
如何在javascript端将数字强制转换为short类型?
TypedArray
,具体来说是Int16Array
,在JavaScript中将数字强制转换为特定的数值类型:
function toShort(number) {
const int16 = new Int16Array(1)
int16[0] = number
return int16[0]
}
console.log(toShort(65512))
int
和short
之类的类型,它有一个number
类型,它是IEEE-754双精度二进制浮点类型(并且像Patrick Roberts的答案中的类型数组一样)。但是,对于某些操作,它就像拥有32位整数类型一样。var a = 65512;
a = (a << 16) >> 16;
console.log(a);
Int16Array
使用16位整数,Float32Array
使用32位浮点数等(有一个基本上是number
的Float64Array
)。它们中的一个真正酷的事情是,您可以拥有具有不同位视图的底层位缓冲区。更多信息请参见MDN。 - T.J. CrowderFloat64
,这意味着整数精度不会被保留,因此没有意义拥有它们。 - Patrick Robertsvar number = 65512
var shortValue = number > 0x7FFF ? number - 0x10000 : number;
console.log(shortValue);
65536
和32767
分别替换为0x10000
和0x7FFF
可能会更容易理解。 - Patrick RobertsJavaScript不支持short等变量类型。你需要在服务器端处理确保数字是short类型,并在JavaScript端将其作为字符串保留。
&
时,我不确定您期望发生什么。 - Patrick Roberts