C无符号字符的python版本

C无符号字符的python版本,python,char,Python,Char,我需要有关此C代码的python版本的帮助: #define HostBusy_high 0x02 #define control_register 0x37a Out32 (control_register,(unsigned char)(Inp32(control_register) | HostBusy_high)); Out32和Inp32是位于inpout32.dll中的函数,用于连接并行端口。这些函数将十六进制值作为其参数。我试图用python编写代码以获得所需的值,但

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

#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))
使用上面的代码,我似乎没有得到我想要的值。我怀疑它是未签名的值


谢谢

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

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

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

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

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


一般来说,如果不充分了解源语言和目标语言,以及正在翻译的代码体,就无法通过逐行逐行的语言间代码直译获得好的结果

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


一般来说,如果不充分了解源语言和目标语言,以及正在翻译的代码体,就无法通过逐行逐行的语言间代码直译获得好的结果

您可以在ctypes库中找到与
c_ubyte
数据类型匹配的内容。查看是否使用值填充该类型的对象,并确定其是否合适

其余类型以表格形式列出

您可以在ctypes库中找到与
c_ubyte
数据类型匹配的内容。查看是否使用值填充该类型的对象,并确定其是否合适

其余类型以表格形式列出

需要更多的上下文。你想用字节值做什么?user680730,恕我冒犯,但考虑到你的@stackoverflow历史记录,我建议你先阅读Python教程,只有在某些内容仍然不清楚时才提问。给你:需要更多的背景。你想用字节值做什么?user680730,恕我冒犯,但考虑到你的@stackoverflow历史记录,我建议你先阅读Python教程,只有在某些内容仍然不清楚时才提问。给你:在这种情况下,也许他应该给一个变量赋值,取值范围为0..255?:)我不知道他想要什么。也许他得到的值介于-128和127之间,当值为负时,他需要这两个值的补码。但不确定。在这种情况下,也许他应该给变量赋值,取值范围为0..255?:)我不知道他想要什么。也许他得到的值介于-128和127之间,当值为负时,他需要这两个值的补码。不过我不确定。