【问题标题】:how to convert two bytes into integer如何将两个字节转换为整数
【发布时间】:2023-03-09 08:21:02
【问题描述】:

我正在尝试以字节为单位调整 BMP 文件的大小,但我不知道如何读取两个(或 n)字节并将其转换为 int。 例如:

13 0B 00 00 = 2835 
46 04 00 00 = 1094
B6 51 01 00 = 86454

【问题讨论】:

  • 什么语言?请说明

标签: integer byte bit


【解决方案1】:

您只需将各个字节乘以 256(相当于左移 8 位)。唯一棘手的部分是您需要知道将它们相乘的顺序。这称为 endiannessRead more about endianness here.

intVal = ((B0 * 256 + B1) * 256 + B2) * 256 + B3

在您的示例中,字节以 little endian 形式存储(LSB 首先),因此转换第一组字节的过程如下:

(((0x00 * 256) + 0x00) * 256 + 0x0B) * 256 + 0x13

【讨论】:

  • 0x13(19) 0x0B(11) => 19* 256 + 11 = 4875 而不是我希望的 2835
  • 哇,这就是我需要的,感谢您的链接和答案:D
【解决方案2】:

如果您正在使用的语言支持转换,请尝试intVal = buffer1 | buffer2 << 8

对于您的情况,这将是: 19 | 22 << 8 = 2835

简单得多,简洁明了。

另请参阅Convert 2 bytes into an integer 了解有关非常相似场景的更多详细信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-08
    • 2014-04-18
    • 2019-07-31
    • 2016-02-06
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    相关资源
    最近更新 更多