从有符号到无符号的 JavaScript C 风格类型转换

新手上路,请多包涵

如何在javascript中输入一个数字?

 a = (unsigned int)atoi(arg1);
b = (unsigned int)atoi(arg2);

假设 a 和 b 可以签名。

我想将 4 字节有符号整数转换为 4 字节无符号整数。

我知道在 javascript 中没有类型转换或签名/未签名之类的东西。我正在寻找一种易于理解的算法。

原文由 Matthias 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 439
2 个回答

您可以尝试 a = arg1>>>0 ,但我不确定它是否能满足您的需求。

有关详细信息,请参阅 此问题

原文由 Vatev 发布,翻译遵循 CC BY-SA 3.0 许可协议

你也可以使用

(new Uint32Array([arg1]))[0]

例如

< (new Uint32Array([-1]))[0]
> 4294967295

说明:JavaScript 不像 C 那样遵循传统的机器架构整数转换约定,它更喜欢类型简单性和可移植性而不是低级效率。然而,JavaScript 中的类型化数组(Uint8Array 等)是专门为高效和定义良好的多字节和位级操作而添加的。因此,我们可以利用这一事实来访问定义明确的内置位转换操作。上例中的语法:

  1. 创建输入的自然数数组
  2. 根据该数字构造一个类型化数组 (Uint32Array)。这是演员将发生的地方。
  3. 提取该类型化数组的第一个(第 0 个)元素,其中包含转换结果。

原文由 joth 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题