CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - unsigned char array to managed String

unsigned char array to managed String

dział ogólny

unsigned char array to managed String

Nowy postprzez Slynx » wtorek, 28 czerwca 2011, 12:53

Mam problem z konwersją z typu unsigned char na Stringa. Znalazłem kilka sposobów. Próbowałem też z reinterpret_cast, ale też nie chciało pójść. Ogólnie to wiem jak to zrobić, ale to byłoby na około, a zależy mi na szybkości, bo pracuje na dużych plikach (do 1 GB), a powinno działać w tle, więc nie chcę być konwersję typów (przepisywanie) specjalnie spowalniało działanie.
Jedyne kompilujące się rozwiązanie to użycie funkcji z klasy Convert (biblioteki netowe) FromBase64String, ale to jest chyba inny typ, bo przepisuje niepoprawnie. (dane wyjściowe inne niż wejściowe).
KOD cpp:     UKRYJ  
System::IO::FileStream^ fs = gcnew FileStream(input_file, FileMode::Open);
array<unsigned char>^ data = gcnew array<unsigned char>(xxx);
Int64 temp = fs->Read(data, 0, xxx);

MessageBox::Show(data);
 

Muszę powyższy kod zmusić do działania (i musi dojść do konwersji, a nie opcja odczytu od razu do Stringa)


I jeszcze coś przy okazji. Czy
KOD cpp:     UKRYJ  
array<unsigned char> ^ data;
array<Byte>^ data;
 

To jest to samo ? Przez przypadek pomieszałem jedno z drugim i okazało się, że nie było żadnych problemów, na warningu 4 poziom, też kompilator nawet nie ostrzegł, że zmiana typu czy coś...
Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome

Re: unsigned char array to managed String

Nowy postprzez Cyfrowy Baron » wtorek, 28 czerwca 2011, 13:00

Slynx napisał(a):To jest to samo ?


Nie może być to samo, unsigned char to nie Byte.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4731
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 445
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: unsigned char array to managed String

Nowy postprzez Slynx » wtorek, 28 czerwca 2011, 13:24

Więc czemu akceptuje jedno tak samo jak drugie nawet bez żadnego ostrzeżenia ?
Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome

Re: unsigned char array to managed String

Nowy postprzez polymorphism » wtorek, 28 czerwca 2011, 14:39

Bo Byte to pewnie alias typu unsigned char.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2263
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 210
System operacyjny: Windows 8.1
Windows 10
Linux Mint 19
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: unsigned char array to managed String

Nowy postprzez Slynx » wtorek, 28 czerwca 2011, 15:27

A co do samego tematu ? Jak wygląda taka zamiana ? Z tablicy typu unsigned char na String ?
Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome

Re: unsigned char array to managed String

Nowy postprzez polymorphism » wtorek, 28 czerwca 2011, 15:47

Slynx napisał(a):Jak wygląda taka zamiana ? Z tablicy typu unsigned char na String ?

Pytanie, co jest w tej tablicy? String jest stringiem unikodowym, i nie możesz jemu ot tak sobie przypisywać co chcesz.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2263
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 210
System operacyjny: Windows 8.1
Windows 10
Linux Mint 19
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: unsigned char array to managed String

Nowy postprzez Slynx » wtorek, 28 czerwca 2011, 15:52

Więc załóżmy, że klasa FileStream wczytuje zwykły plik tekstowy.
Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome

Re: unsigned char array to managed String

Nowy postprzez polymorphism » wtorek, 28 czerwca 2011, 17:18

No to użyj klasy BinaryReader z odpowiednim enkoderem. Ewentualnie użyj tylko enkodera.

p.s. "zwykły plik tekstowy" może być w wielu kodowaniach.
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
Slynx
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2263
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 210
System operacyjny: Windows 8.1
Windows 10
Linux Mint 19
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: unsigned char array to managed String

Nowy postprzez Slynx » wtorek, 28 czerwca 2011, 20:25

Nom, rzeczywiście. Tym razem żeby nie zapomnieć zrobiłem sobie prostą funkcję.
KOD cpp:     UKRYJ  
String^ Convert(array<unsigned char>^ data)
{      
        return Encoding::ASCII->GetString(data);
};
 
Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 5 gości

cron