Отправляет email-рассылки с помощью сервиса Sendsay

За 2019-11-10

[prg] Re: python - ctypes унифицированные классы для c_char_p/c_wchar_p и c_char

Для определения ОС в python есть встроенные вещи:

import sys

if sys.platform == "win32":

# windows

elif sys.platform == "linux" or sys.platform == "linux2":

# linux

elif sys.platform == "darwin":

#OS X

10.11.2019 7:27, gozaltech пишет:
> есть кросс-платформенная библиотека которая на windows использует
юникодовые
> строки, тоесть wchar, а в остальных случаях char.
>
> может быть есть какой-то путь это решить, и получить кроссплатформенный
клас
> для c_char/c_wchar и c_char_p/c_wchar_p который принимал бы простые строки
и
> уже внутри решал по условиям операционной системы, если linux
> c_char/c_char_p где и надо при входных параметрах кодировать в байты, и
при
> возврате на оборот декодировать байты в строки.
>
>

   2019-11-10 15:11:07 (#3636140)

[prg] python - ctypes унифицированные классы для c_char_p/c_wchar_p и c_char/c_w

Здравствуйте.

есть кросс-платформенная библиотека которая на windows использует юникодовые
строки, тоесть wchar, а в остальных случаях char.

в python3 - ctypes такая проблемма, что c_char принимает байты, а c_wchar
строки.

каким образом можно сделать класс, в который передаватся и возвращаться
будут строковые данные?

я сделал custom класс и в качестве from_param указал закодированную строку в
байты, и также метод _check_retval возвращает декодированные байты в строку,
но это не везьде работает.

например, если я в структуре в качестве типа поля указываю свой кастомный
тип выше созданный, то декодирование не происходит, также если я в argtypes
передаю char_array данные не кодируються в байты.

может быть есть какой-то путь это решить, и получить кроссплатформенный клас
для c_char/c_wchar и c_char_p/c_wchar_p который принимал бы простые строки и
уже внутри решал по условиям операционной системы, если linux
c_char/c_char_p где и надо при входных параметрах кодировать в байты, и при
возврате на оборот декодировать байты в строки.

спасибо

   2019-11-10 08:27:58 (#3636102)