Python-версия C без знака char - PullRequest
0 голосов
/ 16 июня 2011

Мне нужна помощь с версией Python для этого кода C:

#define HostBusy_high   0x02
#define control_register    0x37a

Out32 (control_register,(unsigned char)(Inp32(control_register) | HostBusy_high));

Out32 и Inp32 - это функции, расположенные в inpout32.dll, используемые для взаимодействия параллельных портов. Эти функции принимают шестнадцатеричные значения в качестве своих параметров. Я пытался написать код на python, чтобы получить желаемое значение, но это не то, что я получаю. Смотрите версию Python ниже:

from ctypes import windll

#parallel port instance
p_port = windll.inpout32
HostBusy_high = 0x02
control_register = 0x37a

write_data = write(p_port(Inp32(control_register) | HostBusy_high))
 Out32 (control_register,write_data))

С кодом выше я, кажется, не получаю значение, которое я хочу. Я подозреваю, что это значение без знака.

Спасибо

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Зависит от того, зачем вам нужен неподписанный символ. Для большинства целей вы просто будете использовать целое число Python. Если вам действительно нужен однобайтовый элемент данных, вы можете использовать struct.pack Python для создания однобайтовой байтовой строки из целого числа.

В общем, вы не можете получить хорошие результаты, выполняя построчную буквальную трансляцию кода между языками, без хорошего понимания как исходного, так и целевого языков, а также основной части кода, который вы переводите.

0 голосов
/ 16 июня 2011

Может быть, вы просто должны получить модуль 256 вашего значения.Тогда это, безусловно, без знака.Примеры:

>>> 12 % 256
12
>>> 1022 % 256
254
>>> -1 % 256
255
>>> -127 % 256
129
...