Обработка Python-объекта для байтов в C # - PullRequest
4 голосов
/ 05 марта 2019

Использование Pythonnet в приложении C #:

Python возвращает объект bytes ({<class 'bytes'>}), который является результатом операции pickle.dumps.

Как лучше всего обращаться с этим объектомв C # с точки зрения устойчивости к хранилищу больших двоичных объектов и регидратации объекта bytes для последующей передачи обратно в Python на более позднем этапе?

1 Ответ

7 голосов
/ 08 марта 2019

Предполагая, что у вас есть доступ к Python-части уравнения , самый простой способ решить эту проблему - это сериализовать объект в некотором взаимно понимаемом формате.

В этом случае одной идеей было бы сериализовать байты в base64 (такой юникод, как UTF-8 или -16, может столкнуться с проблемами кодирования в зависимости от содержимого строки байтов). Затем вы могли бы преобразовать эти байты base64 в UTF-8 , чтобы передать его обратно между программами.

Это выглядит (например):

base64.b64encode(pickle.dumps("Some data goes here")).decode("utf-8")
...