Wie erstellt man ein Byte-Array in C ++?

7

Bitte schauen Sie sich die folgende Header-Datei an

%Vor%

Dies hat den Fehler

erzeugt %Vor%

Ich habe es auf diese Weise versucht

%Vor%

aber es hat auch versagt, der selbe Fehler. Allerdings habe ich bemerkt, dass ich auf diese Weise andere eingebaute Ty-Arrays aufrufen kann, zum Beispiel ein int-Array. Warum passiert das mit dem Byte-Array? Wie löst man das? Ich möchte die Werte in cpp-Datei zuweisen. Irgendwelche Ideen?

    
Soldier 10.05.2013, 19:21
quelle

7 Antworten

17

Versuchen Sie

%Vor%

oder

%Vor%

** Hinweis: Ersetzen Sie in älteren Compilern (nicht C ++ 11) die Zeile using durch typedef unsigned char byte;

    
Michael Price 10.05.2013, 19:24
quelle
10

Wenn Sie genau ein Byte haben möchten, wäre uint8_t in cstdint am aussagekräftigsten.

Ссылка

    
TractorPulledPork 10.05.2013 19:29
quelle
7

Byte ist kein Standardtyp in C oder C ++. Versuchen Sie Char, das ist normalerweise und mindestens 8 Bit lang.

    
Joel 10.05.2013 19:24
quelle
6

Vielleicht können Sie den in C ++ 11 verfügbaren std::bitset -Typ nutzen. Es kann verwendet werden, um eine feste Sequenz von N Bits darzustellen, die durch herkömmliche Logik manipuliert werden kann.

%Vor%

Kompilieren mit gcc 4.7.2

%Vor%

Ich bekomme:

%Vor%     
Escualo 10.05.2013 19:35
quelle
2

Byte ist kein Standarddatentyp in C / C ++, aber es kann immer noch so verwendet werden, wie Sie es wollen. Hier ist wie: Denken Sie daran, dass ein Byte eine Speichergröße von acht Bit ist, die eine der ganzen Zahlen zwischen -128 und einschließlich 127 darstellen kann. (Es gibt 256 ganze Zahlen in diesem Bereich; acht Bits können 256 darstellen - zwei erhöht auf die Potenz acht - verschiedene Werte.). Beachten Sie auch, dass ein Zeichen in C / C ++ ein Byte (acht Bits) ist. Alles, was Sie tun müssen, um einen Byte-Datentyp in C / C ++ zu haben, ist, diesen Code an die Spitze Ihrer Quelldatei zu setzen:     #define byte char So können Sie jetzt deklarieren     Byte abc [3];

    
Anthony Oyovwe 28.02.2014 13:27
quelle
1

Sie könnten Qt benutzen, was, falls Sie nicht wissen, C ++ mit einer Menge zusätzlicher Bibliotheken und Klassen und was nicht ist. Qt hat eine sehr praktische QByteArray-Klasse, von der ich mir sicher bin, dass sie Ihren Bedürfnissen entspricht.

Ссылка

    
Jared Price 20.12.2013 15:24
quelle
-1

Byte ist kein Standardtyp in C / C ++, daher wird es durch char dargestellt.

Ein Vorteil davon ist, dass Sie basic_string als Byte-Array behandeln können, um eine sichere Speicherung und Funktionsübergabe zu ermöglichen. Dies wird Ihnen helfen, Speicherlecks und Segmentierungsfehler zu vermeiden, die auftreten können, wenn Sie die verschiedenen Formen von char[] und char* verwenden.

Beispielsweise wird dadurch eine Zeichenfolge als Byte-Array mit Nullwerten erstellt:

%Vor%

Dies ermöglicht standardmäßige bitweise Operationen mit anderen char -Werten, einschließlich derer, die in anderen string Variablen gespeichert sind. Um beispielsweise die char -Werte eines anderen u_string über bytes zu XOR zu setzen:

%Vor%     
Chris Redford 07.01.2016 23:16
quelle