2017-03-23 3 views
-1

Ich mache einen LZW-Kompressor, der seine Ausgabe in hexadezimaler Form aufzeichnet. Es verwendet derzeit ein uchar (OpenCV) zum Speichern von Werten und gibt das uchar in hexadezimaler Form aus.Kann ich ein Array von Uchars als einzigen Uchar verwenden?

Ich wurde jedoch gebeten, dem Benutzer zu erlauben zu wählen, wie viele Bytes verwendet werden, wenn jeder Wert gespeichert wird, also könnte er zum Beispiel 2 Bytes für jeden Wert haben (oder 32 Bytes, es liegt an ihm).

Also, um die Ausgabe zu manipulieren, dachte ich über die Verwendung eines Arrays von Uchars (also, wenn der Benutzer nach 32 Bytes fragt, verwende ich ein Array von 32 Uchars), und die Frage ist: gibt es einen einfachen Weg um einen großen Wert in dieses Array zu schreiben und diesen Wert später auszugeben, ohne sich darum kümmern zu müssen, was in welchem ​​Index und anderen Dingen steckt? Das heißt, das Array als nur ein x-Byte-Uchar zu behandeln? Soll ich einen Vektor verwenden?

Jede Hilfe wird geschätzt.

+0

Es ist nicht sehr klar, was Sie fragen, aber was Sie tun möchten klingt ähnlich wie UTF-8-Codierung. – flyx

+0

Es gibt keinen Standard 'uchar' Typ, ich empfehle Ihnen stattdessen den Standard' uint8_t' zu verwenden, wenn Sie eine kleine Ganzzahl ohne Vorzeichen wollen. –

+0

Ich benutze OpenCV, vergessen zu –

Antwort

0

Sie konnten die folgende Vereinigung

union pun_unsigned { 
    unsigned char c[sizeof(uint64_t)]; 
    uint16_t u16; 
    uint32_t u32; 
    uint64_t u64; 
}; 

Hinweis verwenden, die nur Umtausch- oder (mit oder ohne Vorzeichen) char Verhalten definiert sind.

Verwandte Themen