python使用C结构体
def SDF_GetDeviceInfo(self) -> dict: # 获取设备信息 class DEVICEINFO(Structure): _fields_ = [('IssuerName', c_char*40), ('DeviceName', c_char*16), ('DeviceSerial', c_char*16), ('DeviceVersion', c_int32), ('StandardVersion', c_int32), ('AsymAlgAbility', c_int32*2), ('SymAlgAbility', c_int32), ('HashAlgAbility', c_int32), ('BufferSize', c_int32)] try: deviceInfoPointer = pointer(DEVICEINFO()) code = self.SO.SDF_GetDeviceInfo(self.hSessionHandle, deviceInfoPointer) deviceInfo1 = deviceInfoPointer.contents reVal = dict() reVal['code'] = code reVal['IssuerName'] = deviceInfo1.IssuerName.decode() reVal['DeviceName'] = deviceInfo1.DeviceName.decode() reVal['DeviceSerial'] = deviceInfo1.DeviceSerial.decode() reVal['DeviceVersion'] = str(deviceInfo1.DeviceVersion) reVal['StandardVersion'] = str(deviceInfo1.StandardVersion) reVal['AsymAlgAbility'] = str(deviceInfo1.AsymAlgAbility[0]) + "|" + str(deviceInfo1.AsymAlgAbility[1]) reVal['SymAlgAbility'] = str(deviceInfo1.SymAlgAbility) reVal['HashAlgAbility'] = str(deviceInfo1.HashAlgAbility) reVal['BufferSize'] = str(deviceInfo1.BufferSize) log.debug("retVal:" + str(reVal)) return reVal except BaseException as e: log.critical('关闭会话失败: ' + traceback.format_exc(e))