Wie rechne ich einen uint8_t Wert in einen uint8 HEX Wert um?
Bitte für einen Laien, verstehe den Unterschied nicht ganz außer das es sich einmal um zwei verschiedene Programme (HEX Editor und Visual Studio) handelt, wenn ich das richtig verstehe. Ich habe den Wert 0x207c4b und möchte ihn in den binären achstelligen Wert haben, sprich am Ende muss dann ja eine Zahl stehen...
Danke!
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.
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
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)?
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
Ich sehe schon, ich muss mich da noch richtig tief einlesen
Dankeschön :D Kennst du dich mit lesen von .cpp in Visual C++ aus?
Mhh ich glaube nicht das es ein Script ist https://github.com/yamashi/CyberEngineTweaks/blob/064dc141c2e1cb55eadba2565e61b0fa593c0c23/cyberpunk_patch/src/unlock_menu_patch.cpp
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
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
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
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?