簡體   English   中英

從DLL返回的char []轉換為Python字符串

[英]casting into a Python string from a char[] returned by a DLL

我試圖將C樣式const char []字符串指針(從DLL返回)轉換為Python兼容的字符串類型。 但是當Python27執行時:

import ctypes

charPtr = ctypes.cast( "HiThere", ctypes.c_char_p )
print( "charPtr = ", charPtr )

我們得到: charPtr = c_char_p('HiThere')

也許某些事情無法正確評估。 我的問題是:

  1. 應該如何將此charPtr轉換為兼容Python的可打印字符串?
  2. 是剛才提到的演員操作應該做什么?

ctypes.cast()用於將一個ctype實例轉換為另一個ctype數據類型。 你不需要它將它轉換為python字符串。 只需使用“.value”即可在python字符串中獲取它。

>>> s = "Hello, World"
>>> c_s = c_char_p(s)
>>> print c_s
c_char_p('Hello, World')
>>> print c_s.value
Hello, World

更多信息在這里

如果設置ctypes函數的argtypesrestype屬性,它們將返回正確的Python對象而無需強制轉換。

這是一個調用C運行timectime函數的示例:

>>> from ctypes import *
>>> m=CDLL('msvcrt')
>>> t=c_long(0)
>>> m.time(byref(t))
1326700130
>>> m.ctime(byref(t))  # restype not set
6952984
>>> m.ctime.restype=c_char_p  # set restype correctly
>>> m.ctime(byref(t))
'Sun Jan 15 23:48:50 2012\n'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM