【发布时间】:2015-06-04 01:12:44
【问题描述】:
我正在编写一个脚本,基本上将一些示例数据输出为二进制 blob。 我是软件领域的新实习生,依稀记得字节序的概念。
我意识到 big-endian 的最高有效位从顶部开始,并沿内存块向下工作。
如果我有 0x03000201 并且数据被解析为输出 0 1 2,这是如何发生的,以及正在做些什么来使其在位、字节等方面起作用。
我想知道,在下面发布的示例中,当打印出存储在变量中的数据时,如何将数字提取为 0 1 2 形式。
例如:我正在使用这个文件创建几行二进制 blob:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *file;
int buffer = 0x03000201;
int buffer2= 0x010203;
file = fopen("test.bin", "wb");
if (file != NULL)
{
fwrite(&buffer, sizeof(buffer), 1, file);
fwrite(&buffer2, sizeof(buffer2), 1, file);
fclose(file);
}
return 0;
}
然后我创建了一个 Python 脚本来解析这些数据:
关于解析的信息
import struct
with open('test.bin','rb') as f:
while True:
data = f.read(4)
if not data: break
var1, var2, var3 = struct.unpack('=BHB', data)
print(var1, var2, var3)
【问题讨论】:
-
你的问题绝对不清楚! 解析输出是什么意思?
-
为什么不直接使用维基百科——这很简单
-
对某些人来说简单的事情,对其他人来说可能并不简单。因此,人们提出了一个帮助他人的社区的想法。
-
您实际上是否尝试过阅读相关内容?这不是教程网站。这个问题跑题了。
-
你的问题到底是什么?
标签: c hex endianness