Как я могу конвертировать или получить точное значение из ctypes.c_byte - PullRequest
1 голос
/ 04 февраля 2020

Итак, я использую ctypes для вызова функции DLL. Я передаю переменную возврата by_ref (). В коде это выглядит так:

mydll = cdll('dllpath')

terminal_id = BYTE()
print("terminal id before api call:",terminal_id)
ret = mydll.func(input,byref(terminal_id))
print("terminal id after api call:",terminal_id)

Следующий код печатает:

terminal id before api call:c_byte(0) terminal id after api call:c_byte(53)

У меня есть gui для взаимодействия с терминалом из gui идентификатор терминала: 6380491601819081

Как извлечь это из возвращенной переменной Terminal_id?

Ответы [ 2 ]

1 голос
/ 04 февраля 2020

6380491601819081 не может поместиться в байте. Тип недостаточно велик.

0 голосов
/ 04 февраля 2020

Вы можете получить значение, используя terminal_id.value.

print(dir(terminal_id)) покажет атрибуты и методы типа c_byte.

A c_byte в ctypes, кажется, char in C ( ctypes do c).

import ctypes
x = ctypes.c_byte(3)
print(dir(x))
print(x.value)
...