小编Ara*_*uma的帖子

Pycparser 无法处理预处理代码

我需要在预处理的 C 代码('gcc -E' 产生的结果)上使用 pycparser。但是,我目前遇到了无法理解或解决的问题。

我正在使用提供的示例 year2.c 和 func_defs.py,我对其进行了修改以使用各种预处理器和假库,但无济于事。也许你们中的一些人可以研究一下,看看你是否可以重现/解决这个问题。我将附加所有必要的代码。

错误是使用 year2.c(常规示例文件)和 year2.i('gcc -E' 输出)生成的。后者没有可用的结果,而前者同时使用预处理器/fakelib 变体。

我创建了一个包含所有相关错误的 bitbucket 存储库、使用的脚本(尽管只是它的最后一个变体)以及 year2.c 和 year2.i 文件。

错误和样本回购

谢谢你的时间。

preprocessor python-2.7 pycparser

2
推荐指数
1
解决办法
1735
查看次数

Python3:迭代二进制字符串将字符转换为整数

我觉得我在这里错过了一些微不足道的东西:

我最近跳到了 Python3(在 Eclipse 中使用 PyDev)。
我有一个计算熵值的项目,并包含以下代码:

data = b'NVGI\x19\x01\x10\x00'
seen = dict(((chr(x), 0) for x in range(0,256)))
for byte in data:
    seen[byte]+=1
Run Code Online (Sandbox Code Playgroud)

data 中的二进制字符串要长得多,但这足以用于演示目的。

对于 python3,此代码会导致 KeyError。对于 python2.7,这完全没有问题。

这是因为迭代data返回一个整数(在本例中为 78),而saw需要一个字符“N”。

奇怪的是,在 python2.7 中,相同的代码将产生预期的字符“N”。

我现在已经通过这样做来创可贴:

seen[ord(byte)] += 1
Run Code Online (Sandbox Code Playgroud)

有人可以尝试复制这个或告诉我哪里出了问题吗?

python string iteration python-2.7 python-3.x

2
推荐指数
1
解决办法
1791
查看次数