array<Byte>^buffer in System::String^ konvertieren
-
Hallo,
habe hier einen "buffer" vom Typ array<Byte>^
Die Länge bewegt sich zwischen 10.000 und 30.000 Zeichen und ich möchte darin einen String suchender buffer enthält binärcode
da array<Byte>^ keine Funktion anbietet um nach Strings zu suchen
(außer indexof - wobei ich nicht weiß wie ich das anwenden könnte da ja nur nach einem zeichen gesucht wird)habe ich mir vorgestellt den buffer in einen string zu convertieren, der bietet ja eine suchmethode an...
kann mir da jemand weiterhelfen?
-
ZockerFloh7 schrieb:
der buffer enthält binärcode
Strings sind ja in .net UTF-16 codiert, wenn du das Array in einen String packst, musst du ein Encoding angeben. Könnte das Probleme machen ?
Wie wäre es statt dessen mit cliext::vector
http://msdn.microsoft.com/en-us/library/bb386284.aspx
der hat einen Konstruktor, der ein IEnumerable akzeptiert, damit also auch ein Array.Suchen kann man dann mit einem der Algorithmen von hier
http://msdn.microsoft.com/en-us/library/bb386172.aspx
search oder search_n könnte das Richtige sein.Oder die Bytes in einen std::vector kopieren und dort search verwenden.
-
Was heisst "String suchen"? Du meinst eher "umwandeln", oder?
Dann Enconding::ASCII::GetString":
http://msdn.microsoft.com/en-us/library/38b953c8.aspx
-
Jochen Kalmbach schrieb:
Was heisst "String suchen"?
Das ist halt die Frage. Er wollte den String ja wegen einer Suchfunktion, deshalb gehe ich mal davon aus, er will in der langen Bytefolge eine andere kürzere finden.
Das sollte mit cliext::search eigentlich auch direkt im Array gehen, dafür ist doch der collection_adapter, oder ?
http://msdn.microsoft.com/en-us/library/bb385217.aspx
-
Danke für die Vorschläge, ich versuche wie nn gemeint hat einen vom gui übergebenen string in der bytefolge zu finden
werd das mal mit dem vector probieren, danke
-
Schau auch mal hier, da kommt dieser collection_adapter vor
http://social.msdn.microsoft.com/Forums/is/vclanguage/thread/dd3c58f2-a5c8-4ef8-947b-3db9e2f4df95
-
wow, da wirds kompliziert xD
aber ich werds mir mal anschauen