ChatGPT 说:
如果你告诉我一个数据是小端模式(Little Endian),那说明:
数据的低位字节排在前面,高位字节排在后面。
✅ 举例说明:
假设有一个 4 字节的十六进制数据:
复制编辑
0x78 0x56 0x34 0x12
这四个字节组合成一个32位整数,是小端模式,那它实际的十进制值是:
bash
复制编辑
0x12 << 24 | 0x34 << 16 | 0x56 << 8 | 0x78 = 0x12345678 = 305419896
🧠 处理方式(JS 示例)
如果你拿到的是字节数组(小端序) ,想转成十进制整数,可以按以下方式处理:
js
复制编辑
function littleEndianBytesToInt(bytes) {
return bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24);
}
const bytes = [0x78, 0x56, 0x34, 0x12];
const value = littleEndianBytesToInt(bytes); // => 305419896
🔁 反过来:十进制 → 小端字节
js
复制编辑
function intToLittleEndianBytes(value) {
return [
value & 0xFF,
(value >> 8) & 0xFF,
(value >> 16) & 0xFF,
(value >> 24) & 0xFF,
];
}
const v = 305419896;
const bytes = intToLittleEndianBytes(v); // => [0x78, 0x56, 0x34, 0x12]
📌 总结
| 操作方向 | 小端模式做法 |
|---|---|
| 字节 → 整数 | 从低位字节开始,左移合并 `b0 |
| 整数 → 字节 | 先取低 8 位:value & 0xFF,再右移 8 位再取 |
你只要记住:小端是“低字节在前” ,所有处理都要反过来看待顺序即可。如果你有具体数据,我可以帮你一步步转。