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.


LIF3MAU5 
Beitragsersteller
 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
@LIF3MAU5

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

LIF3MAU5 
Beitragsersteller
 03.04.2022, 16:59

Und was bedeuten dann die Buchstaben im Binärsystem?

tomkaller  03.04.2022, 17:14
@LIF3MAU5

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🤓

LIF3MAU5 
Beitragsersteller
 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)?

LIF3MAU5 
Beitragsersteller
 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
@LIF3MAU5

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...

LIF3MAU5 
Beitragsersteller
 03.04.2022, 18:16
@tomkaller

Ich sehe schon, ich muss mich da noch richtig tief einlesen

LIF3MAU5 
Beitragsersteller
 03.04.2022, 18:22
@tomkaller

Dankeschön :D Kennst du dich mit lesen von .cpp in Visual C++ aus?

tomkaller  03.04.2022, 18:34
@LIF3MAU5

Ich kenne mich nicht mit .cpp aus. Ist dann Listing für die 25 Zeilen das richtige Wort?

LIF3MAU5 
Beitragsersteller
 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

LIF3MAU5 
Beitragsersteller
 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

LIF3MAU5 
Beitragsersteller
 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

ultrarunner  06.04.2022, 09:50
@LIF3MAU5

Hex-Buchstaben im Binärsystem:

  • A = 1010
  • B = 1011
  • C = 1100
  • D = 1101
  • E = 1110
  • F = 1111