从python读取/ proc / kpagecount

时间:2014-11-06 02:20:28

标签: python linux endianness

我正在尝试从python中读取linux / proc / kpagecount

kpagecount存储一个条目数组,每个条目是一个64位计数物理帧被引用的次数。我通常可以从python

读取8个字节(64位)
f = open("/proc/kpagecount", "rb")
a = f.read(8)

a是一个字符串。我不知道如何解释这6个字节的整数值,因为它可以是大端,小端或任何其他编码方式。我也找不到有关格式的信息。我怎么能弄明白呢?

1 个答案:

答案 0 :(得分:1)

您可以使用以下方法找到系统的结束: import sys; print(sys.byteorder)

现在您可以确定结束,迭代读取二进制文件的8个字节,并将它们存储在array中。如果是little endian,则按相反顺序(tbl.size -i -1)存储它们,否则按正常顺序存储。 See endianess

最后,合并这8个字节,以便重建整个64位数字:

  • 创建一个unsigned long long变量,让我们说X,然后将其初始化为0
  • 读取for循环,从0开始,所有先前存储的字节和:
  • 将它们添加到 8位移位 X变量
    • X+= (X<<8) + array[i]