bytes aus C++ per boost returnen?

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
p90
User
Beiträge: 197
Registriert: Donnerstag 22. Juli 2010, 17:30

bytes aus C++ per boost returnen?

Beitragvon p90 » Mittwoch 11. Januar 2017, 22:54

Hallo,

folgendes Problem:

Ich suche nach einer Möglichkeit, aus einer C++ Applikation bytes (also in dem Sinne von Python3 <bytes> zu returnen.
In Python2 war das kein problem, man musste die C++ Bytes in std::string wrappen und konnte das einfach returnen.
Durch die Änderung im Unicode Händling zwischen Python2 und Python3 funktioniert das aber nicht mehr da std::string nun auf Python str abgebildet wird.
Das ganze wird bei mir verwendet um Objekte zu picklen, wodurch alles in Python2 geht, Python3 aber einem ein "UniceodeEncodeError" beim picklen wirft.

Die Frage ist nun, wie löst man das?
Hab schon jede Menge gegooglet aber eien Lösung für diese vertrackte Situtaion konnte ich nicht finden.
Vielen Dank im Vorraus!
p91
Benutzeravatar
snafu
User
Beiträge: 5058
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Re: bytes aus C++ per boost returnen?

Beitragvon snafu » Donnerstag 12. Januar 2017, 09:31

Python hat auch einen Datentypen für Bytes. Falls es ein String sein muss, dann bietet sich das Dekodieren mit ASCII an.
shcol (Repo | Doc | PyPi)
Benutzeravatar
BlackJack
Moderator
Beiträge: 31926
Registriert: Dienstag 25. Januar 2005, 23:29
Wohnort: Berlin
Kontaktdaten:

Re: bytes aus C++ per boost returnen?

Beitragvon BlackJack » Donnerstag 12. Januar 2017, 09:52

@snafu: Das weis p90 doch das es `bytes` gibt, und die Frage ist ja wie man aus C++ mit Boost `bytes` an Python 3 zurückgeben kann und *nicht* `str`.
„All religions are the same:
religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
snafu
User
Beiträge: 5058
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Re: bytes aus C++ per boost returnen?

Beitragvon snafu » Donnerstag 12. Januar 2017, 09:55

Dann habe ich die Fragestellung anscheinend nicht wirklich durchschaut. Ich dachte, es geht um die Python-Seite bei dem Vorhaben. Tut mir leid, wenn mein Beitrag nicht so hilfreich war...
shcol (Repo | Doc | PyPi)
Benutzeravatar
BlackJack
Moderator
Beiträge: 31926
Registriert: Dienstag 25. Januar 2005, 23:29
Wohnort: Berlin
Kontaktdaten:

Re: bytes aus C++ per boost returnen?

Beitragvon BlackJack » Donnerstag 12. Januar 2017, 10:04

@p90: Hm, wenn Du schon viel gegooglet hast, dann kann der zweite Treffer bei meiner ersten Suchanfrage ja eigentlich keine Lösung enthalten, das wäre zu einfach, oder? :-)

Aber vielleicht ist Expose C++ buffer as Python 3 bytes ja doch das was Du suchst. (Und eventuell willst Du auch ein `memoryview` anstelle von `bytes`.)
„All religions are the same:
religion is basically guilt, with different holidays.” — Cathy Ladman

Zurück zu „Python mit anderen Sprachen verwenden“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder