编程语言
首页 > 编程语言> > python中int数组的unsigned char数组

python中int数组的unsigned char数组

作者:互联网

我尝试使用wiringPi’s lcdCharDef()在我的2004 lcd上使用覆盆子pi定义一个新角色(大写德语变音符号“Ä”)

这是我的代码

import wiringpi2 as wiringpi

# Ä
cap_umlaut_a = [
    int('0b01010', 2),
    int('0b00100', 2),
    int('0b01010', 2),
    int('0b10001', 2),
    int('0b11111', 2),
    int('0b10001', 2),
    int('0b10001', 2),
    int('0b00000', 2)
]

print(cap_umlaut_a) # [10, 4, 10, 17, 31, 17, 17, 0]

wiringpi.lcdCharDef(lcd_handle, 0, cap_umlaut_a)

当我运行此代码时,我收到以下错误:

TypeError: in method ‘lcdCharDef’, argument 3 of type ‘unsigned char [8]’

我希望这些整数与unsigned chars相同

[编辑]
在代码的不同部分,我使用ord(char)将一个字符转换为unsigned int.这可以导致正确的anser吗?

如何将数组转换/转换为可以接受的类型?

附: (注意(根据我的理解)python wiringPi库只包含wiringPi的C函数)

[编辑]
我在github上打开了一个问题:https://github.com/WiringPi/WiringPi2-Python/issues/20

解决方法:

我做了一些研究,发现了相关的python绑定at this github repo的来源.

这条线是

res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_unsigned_char, 0 | 0 );

正如你所看到的,你必须将指向python的指针传递给unsigned char.根据this thread,等效字节是字节串.这意味着正确的呼叫将是

import struct
wiringpi.lcdCharDef(lcd_handle, 0, struct.pack('8B', *cap_umlaut_a))

这相当于

wiringpi.lcdCharDef(lcd_handle, 0, b'\x0A\x04\x0A\x11\x1F\x11\x11\x00')

标签:python,c-3,type-conversion,int,wiringpi
来源: https://codeday.me/bug/20190708/1399514.html