告诉你一个数据 是小端模式 我应怎么处理数据

69 阅读1分钟
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 位再取

你只要记住:小端是“低字节在前” ,所有处理都要反过来看待顺序即可。如果你有具体数据,我可以帮你一步步转。