C unsigned ch的python版本

2024-04-29 12:57:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要有关此C代码的python版本的帮助:

#define HostBusy_high   0x02
#define control_register    0x37a

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

Out32和Inp32是input32.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))

上面的代码似乎没有达到我想要的值。我怀疑是无符号值。

谢谢


Tags: 函数代码版本registerdataportcontrolwrite
2条回答

取决于为什么需要无符号字符。在大多数情况下,您只需使用Python整数。如果实际需要一个单字节数据,可以使用Python的struct.pack从整数中生成一个单字节字符串。

一般来说,如果对源语言和目标语言以及要翻译的代码体都没有很好的理解,就无法通过在语言之间逐行直译代码来获得好的结果。

也许你应该得到你的值的256模。那肯定是没有签名的。示例:

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

相关问题 更多 >