我想用Pythonprint
语句打印一个C字符串。数组vendorName
包含ASCIIZ C字符串A ANTHONY & SONS INC
。我的动机是将C字符串转换为Python字符串,以便可以使用所有Python字符串方法。在
我有一个结构:
class _vendrRecord(Structure):
_pack_ = 1 # pack the struct
_fields_ = [
("vendorName" ,c_ubyte *(40 + 1)),
("ytdPayments" ,c_ulong),
]
我要打印字符串“vendorName”,它是ASCIIZ。在
我可以像这样使用printf打印它:
^{pr2}$我试过这个print(vendrRecord.vendorName)
,但它只是打印地址。根据Jamie Nicholl Shelley提供的信息,我尝试了print(cast(vendrRecord.vendorName,c_char_p).value)
,但结果是{A ANTHONY & SONS INC
请注意,print(vendrRecord.ytdPayments)
打印正确。在
您正在打印地址,因为这是您要求代码执行的操作。 您已经告诉它它是一个字符串类型,但没有在函数中声明为字符串,而是使用指向地址处数据的指针
与print()相比,print()是一个基于c++的函数
看起来你已经解决了大部分问题,只是对字符串编码感到困惑。您已成功到达
bytes
对象:bytes对象是它听起来的样子,只是一个字节序列,它以字符串的方式显示只是为了方便用户。与字符串不同,每个组件都是一个整数:
^{pr2}$但是,既然我们知道我们使用的是ascii,我们就可以将这个bytes对象解码为Python字符串,然后使用所有常用方法:
相关问题 更多 >
编程相关推荐