我正在接收和发送两个小端数字的十进制表示。我想:
- 将一个变量左移 8 位
- 或者他们
- 移动可变位数
- 创建 2 个 8 位数字,分别代表 16 位数字的前半部分和后半部分。
javascript(根据 https://developer.mozilla.org/en/JavaScript/Reference/Operators/Bitwise_Operators )在移动时使用大端表示…
endianness 对我来说有点陌生(我只有 90% 确定我概述的步骤是我想要的。)所以交换有点令人眼花缭乱。请帮忙!我真的只需要知道如何有效地交换订单。 (我只能想到在 toString() 返回值上使用 for 循环)
原文由 griotspeak 发布,翻译遵循 CC BY-SA 4.0 许可协议
解释:
val
是0xAABB
。val
to get the LSB by&
ing with0xFF
: result is0xBB
.0xBB00
。val
8 位:结果为0xAA
(LSB 已经“掉落”到右侧)。&
使用0xFF
屏蔽该结果以获得 LSB:结果为0xAA
。|
将步骤 3 和步骤 5 的结果组合在一起:0xBB00 | 0xAA
是0xBBAA
。解释:
比方说
val
是0xAABBCCDD
。Mask
val
to get the LSB by&
ing with0xFF
: result is0xDD
.将结果向左 移动 24 位:结果为
0xDD000000
。面具
val
获得第二个字节,由----0xFF00
与&
与—-一起使用0xCC00
将结果向左 移动 8 位:结果为
0xCC0000
。向右 移动
val
8 位:结果为0xAABBCC
(LSB 已经“掉落”到右侧)。通过
&
使用0xFF00
屏蔽该结果以获得第二个字节:结果为0xBB00
。将
val
向右移动 24 位:结果为0xAA
(除了 MSB 之外的所有内容都“掉落”在右侧)。通过
&
使用0xFF
屏蔽该结果以获得 LSB:结果为0xAA
。通过
|
组合步骤 3、5、7 和 9 的结果:0xDD000000 | 0xCC0000 | 0xBB00 | 0xAA
是0xDDCCBBAA
。