Wie rechne ich einen uint8_t Wert in einen uint8 HEX Wert um?

2 Antworten

In welchem der unterstützten Zahlensysteme du den Wert in deinem Sourcecode darstellst, ist völlig egal. Im Endeffekt wird er in deiner uint8_t-Variablen immer im Binärsystem gespeichert, etwas anderes wäre technisch gar nicht möglich.

Du kannst Im Sourcecode 0x207c4b daher so stehen lassen, im Speicher wird das dann als 10000001111100010010111101 dargestellt.

Aber Achtung: Der Typ uint8_t kann nur 8 Bit (also 1 Byte) speichern. Deine Zahl passt da also nicht hinein, da sie 26 Bit belegt, wofür man mindestens 4 Byte bräuchte. Daher gibt es auch z.B. den Typ uint32_t.


verreisterNutzer  03.04.2022, 17:05

Verstehe so langsam, dass heißt aber, wenn ich diesen Wert im Hexeditor als Offset suchen möchte, wie müsste dieser dann dargestellt werden, ganz einfach als 207C4B?

ProfFrink  01.08.2022, 10:37
@verreisterNutzer

Vorsicht, vorsicht. Was meinst Du mit Offset? Der Offset Begriff wird meistens in Zusammenhang einer Speicheradressierung verwendet. Dabei wird der Offset meistens zu einer bestehenden Basisadresse hinzuaddiert. Also wenn Du mit einem Hexidezimaleditor arbeitest und vereinbarungsgemäss Offset Adressen angezeigt werden. Dann ja. Dann findest Du die Adresse 0x207C4B auch genau an der Stelle 0x207C4B. Die meisten Hexeditoren schreiben die Speicherinhalte aber in Gruppen zu 16 byte in eine Zeile. Dann musst Du die Adresse 0x207C40 oder 0x0020 7C40 suchen und dann noch 12 Spalten weiter zählen bis Du die gewünschte Adresse findest.

Ohne die Frage zu beantworten, wenn Du eine 8 stellige Hexzahl in Binär umwandelst, brauchst Du wesentlich mehr als 8 Stellen

die Zahl 1001 binär entspicht 2^3 + 2^0

= 9

Woher ich das weiß:eigene Erfahrung

verreisterNutzer  03.04.2022, 16:59

Und was bedeuten dann die Buchstaben im Binärsystem?

tomkaller  03.04.2022, 17:14
@verreisterNutzer

Die Buchstaben sind aus einer Hexzahl:

123456789abzdef- 10 (= dezimal 16)

im Binär system

0,1,10,11, 100, 101, 110 usw und nix Buchstaben🤓

verreisterNutzer  03.04.2022, 17:20
@tomkaller

Das weiß ich auch das die Buchstaben im Prinzip nur Einsen und Nullen sind aber ist A dann gleich 01 oder wie (ohne jetzt nachschauen zu müssen)?

verreisterNutzer  03.04.2022, 17:32
@tomkaller

Im ASCII wäre die Bitfolge 1000001 das A und im uint8_t werde ich auch nicht ganz schlau ... das ist ja mein Problem :D

tomkaller  03.04.2022, 17:39
@verreisterNutzer

Da bist Du auf nem falschen Dampfer. ASCII Zeichen sind Zeichen einer Schreibmaschinen- oder RTTY Maschinen Tastatur und diese wurden mit Adaptionen auf den PC übernommen und erweitert,

Im Basic gab es einen Befehl,

printchr$(65)

Ergebnis A oder a...

verreisterNutzer  03.04.2022, 18:38
@tomkaller

Ja in diesem Fall ist es glaub ich ein spezifischer Memory Adress Array als C++ References (String-Wert)... Welcher Wert dann aber geändert wird, verstehe ich nicht, mit "pAddress, 8" ... kann ich nichts anfangen. Benötige glaub ich ein anderes Tool

verreisterNutzer  03.04.2022, 18:49
@tomkaller

Ich vermute das ist ein Pointer -> *pAddress = 0; der verweist auf diese uint8_t* Variable aber C++ ist halt doch ganz ander als C# :D

verreisterNutzer  03.04.2022, 18:59
@tomkaller

Sharp teilweise aber nicht alles, in diesem Fall RTTI (Run-time type information) in C++ ist mehr als nur C# aber klar der Schlüsselfaktor ist vorhanden und baut darauf auf. Verstehe da nur Bahnhof. In C++ muss man den Speicher manuell verwalten, wenn Objekte dynamisch zugewiesen werden. C# führt die Speicherverwaltung automatisch aus