【发布时间】:2023-03-09 08:21:02
【问题描述】:
我正在尝试以字节为单位调整 BMP 文件的大小,但我不知道如何读取两个(或 n)字节并将其转换为 int。 例如:
13 0B 00 00 = 2835
46 04 00 00 = 1094
B6 51 01 00 = 86454
【问题讨论】:
-
什么语言?请说明
我正在尝试以字节为单位调整 BMP 文件的大小,但我不知道如何读取两个(或 n)字节并将其转换为 int。 例如:
13 0B 00 00 = 2835
46 04 00 00 = 1094
B6 51 01 00 = 86454
【问题讨论】:
您只需将各个字节乘以 256(相当于左移 8 位)。唯一棘手的部分是您需要知道将它们相乘的顺序。这称为 endianness。 Read more about endianness here.
intVal = ((B0 * 256 + B1) * 256 + B2) * 256 + B3
在您的示例中,字节以 little endian 形式存储(LSB 首先),因此转换第一组字节的过程如下:
(((0x00 * 256) + 0x00) * 256 + 0x0B) * 256 + 0x13
【讨论】:
如果您正在使用的语言支持转换,请尝试intVal = buffer1 | buffer2 << 8
对于您的情况,这将是:
19 | 22 << 8 = 2835
简单得多,简洁明了。
另请参阅Convert 2 bytes into an integer 了解有关非常相似场景的更多详细信息
【讨论】: