gri*_*eak 16 javascript endianness
我收到并发送两个小端数的十进制表示.我想要:
javascript(根据https://developer.mozilla.org/en/JavaScript/Reference/Operators/Bitwise_Operators)在转换时使用大端表示...
endianness对我来说有点陌生(我只有90%肯定我的概述步骤是我想要的.)所以交换有点令人眼花缭乱.请帮忙!我真的只需要知道如何以有效的方式交换订单.(我只能想到在toString()返回值上使用for循环)
Luk*_*keH 31
function swap16(val) {
return ((val & 0xFF) << 8)
| ((val >> 8) & 0xFF);
}
Run Code Online (Sandbox Code Playgroud)
说明:
val例如,0xAABB.val获得LSB由&荷兰国际集团与0xFF:结果0xBB.0xBB00.val 8位向右:结果是0xAA(LSB的具有"脱落"的右手侧).&荷兰国际集团与0xFF:结果0xAA.|荷兰国际集团在一起:0xBB00 | 0xAA是0xBBAA.function swap32(val) {
return ((val & 0xFF) << 24)
| ((val & 0xFF00) << 8)
| ((val >> 8) & 0xFF00)
| ((val >> 24) & 0xFF);
}
Run Code Online (Sandbox Code Playgroud)
说明:
val例如,0xAABBCCDD.val获得LSB由&荷兰国际集团与0xFF:结果0xDD.0xDD000000.val通过获得的第二个字节&荷兰国际集团与0xFF00:结果0xCC00.0xCC0000.val 8位向右:结果是0xAABBCC(LSB的具有"脱落"的右手侧).&荷兰国际集团与0xFF00:结果0xBB00.val 24位到右:结果是0xAA(以外的所有MSB已"下车"的右侧).&荷兰国际集团与0xFF:结果0xAA.|荷兰国际集团在一起:0xDD000000 | 0xCC0000 | 0xBB00 | 0xAA是0xDDCCBBAA.此类函数可用于更改 js 中的字节序:
const changeEndianness = (string) => {
const result = [];
let len = string.length - 2;
while (len >= 0) {
result.push(string.substr(len, 2));
len -= 2;
}
return result.join('');
}
changeEndianness('AA00FF1234'); /// '3412FF00AA'
Run Code Online (Sandbox Code Playgroud)