JavaScript - 将四字符数组转换为整数

发布于 2024-10-11 17:49:33 字数 21 浏览 1 评论 0原文

如何将四字符数组转换为整数?

How can i convert a four-character array to an integer?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

风筝有风,海豚有海 2024-10-18 17:49:34
var arr = [5,2,4,0],
    foo = +arr.join('');

console.log(foo, typeof foo);
var arr = [5,2,4,0],
    foo = +arr.join('');

console.log(foo, typeof foo);
小…红帽 2024-10-18 17:49:34

我想这取决于您想要如何将字符值映射到整数位。

一种直接的解决方案是:

var myArray = ['1', '2', '3', '4']
var myInt = (myArray[0].charCodeAt(0) << 24) | (myArray[1].charCodeAt(0) << 16) | (myArray[2].charCodeAt(0) << 8) | myArray[3].charCodeAt(0);

这会产生整数0x01020304。这使用输入数组中的整数,对于字符,结果可能会有所不同,具体取决于所使用的字符。

更新:使用 charCodeAt() 将字符转换为代码点。

I guess that depends on how you want to map the character values to the integer's bits.

One straight-forward solution would be:

var myArray = ['1', '2', '3', '4']
var myInt = (myArray[0].charCodeAt(0) << 24) | (myArray[1].charCodeAt(0) << 16) | (myArray[2].charCodeAt(0) << 8) | myArray[3].charCodeAt(0);

This produces the integer 0x01020304. This uses integers in the input array, for characters the result might be different depending on the characters used.

Update: use charCodeAt() to convert characters to code points.

源来凯始玺欢你 2024-10-18 17:49:34
var chArr = ['1','2','3','4'];
var num = parseInt( chArr.join(''), 10);

或者

var num = parseInt( chArr.reverse().join(''), 10);

如果取决于您数组的填充顺序..

var chArr = ['1','2','3','4'];
var num = parseInt( chArr.join(''), 10);

or

var num = parseInt( chArr.reverse().join(''), 10);

if depending on the order you array is filled..

爱给你人给你 2024-10-18 17:49:33

您正在尝试将这些字符转换为 ASCII 字符代码并将这些代码用作字节值。这可以使用 charCodeAt 来完成。例如:

var str = "x7={";
var result = ( str.charCodeAt(0) << 24 )
           + ( str.charCodeAt(1) << 16 )
           + ( str.charCodeAt(2) << 8 )
           + ( str.charCodeAt(3) );

这将按预期返回 2016886139。

但是,请记住,与 C++ 不同,JavaScript 不一定使用一字节、256 个字符集。例如,'€'.charCodeAt(0) 返回 8364,远远超出等效 C++ 程序允许的最大值 256。因此,任何 0-255 范围之外的字符都会导致上述代码行为不稳定。

使用 Unicode,您可以将上面的内容表示为“电位㵻”。

You're trying to turn those characters into ASCII character codes and using the codes as byte values. This can be done using charCodeAt. For instance:

var str = "x7={";
var result = ( str.charCodeAt(0) << 24 )
           + ( str.charCodeAt(1) << 16 )
           + ( str.charCodeAt(2) << 8 )
           + ( str.charCodeAt(3) );

This returns 2016886139 as expected.

However, bear in mind that unlike C++, JavaScript will not necessarily use a one-byte, 256-character set. For instance, '€'.charCodeAt(0) returns 8364, well beyond the maximum of 256 that your equivalent C++ program would allow. As such, any character outside the 0-255 range will cause the above code to behave erraticaly.

Using Unicode, you can represent the above as "砷㵻" instead.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文