String umwandeln

Hallo zusammen ,
ich habe folgendes Problem :

ich habe einen Hexadezimalwert und dieser muss in einem Array hinterlegt werden ( auch in Hex )

Wie bekomme ich nun diesen Hex-String in das Array umgewandelt , ohne das sich das Hex -Format ändert?

als Beispiel:

String botschaft;
byte vvec[8] = {0x1C, 0x00, 0x00, botschaft, 0x00, 0x00, 0x00, 0x00}

xVal = analogRead(A0);
Winkel = map(xVal,518, 0 ,0 , 220);
Faktor = (Winkel + 100);
hexawert = String(Faktor,HEX);
botschaft = "0x" + hexawert;

Vermutlich gibt es auch eine elegantere Lösung als meine den Widerstandswert in Hex umzurechnen, deshalb bin ich auch für Verbesserungen offen :wink:

Was du HEX nennst ist wohl nur eine Frage der Präsentation.
Denn dein Array sieht nicht so aus, als müsste da die hexadezimale Ascii Repräsentation des Wertes eingetragen werden.

Winkel = map(xVal,518, 0 ,0 , 220);
Faktor = (Winkel + 100);

Faktor kann offensichtlich Werte bis 320 annehmen, das passt in kein Byte!

Der Datentype von Faktor ist mir nicht bekannt, also zeige ich dir eine Zuweisung mit (vermutlich) implizitem Typecast auf Byte.

const byte platzhalterIndex = 3; 
byte vvec[8] = {0x1C, 0x00, 0x00, 0/* platzhalter */, 0x00, 0x00, 0x00, 0x00};

xVal = analogRead(A0);
Winkel = map(xVal,518, 0 ,0 , 220);
Faktor = (Winkel + 100);
vvec[platzhalterIndex] = Factor;

Da bist du aber vollkommen mit deinen Datentypen verwirrt. Das mit dem String ist einfach nur falsch.

Hexadezimal ist nur für dich als Programmierer gedacht, damit Zahlen lesbarer werden. Für den Controller ist es egal. Für den ist alles Binär.

Das ist das gleiche:

byte test[] = { 100, 200, 10 };
byte test[] = { 0x64, 200, 0b00001010 };

Du kannst Dezimal, Binär und Hex beliebig mischen. Da muss man nichts umrechnen

Danke erstmal für die schnellen Antworten !

Ich bin bisher davon ausgegangen, dass der Array in Hex bleiben muss weil der Array auf einen externen Datenbus gesendet wird.
Dieser Datenbus hat dann nichts mehr mit dem Arduino zutuhen.

Ich bin mir dann nicht sicher ob es dem Empfänger egal ist ob die Botschaft dann Binär , Hex, oder Dezimal ist.

Ich bin mir dann nicht sicher ob es dem Empfänger egal ist ob die Botschaft dann Binär , Hex, oder Dezimal ist.

Das ist nur für dich als Programmierer ein Unterschied. In dem Moment wo du eine Konstante in den Code schreibst. Ein Computer kann nur Binär

Solche Konvertierungen sind nur dann relevant, wenn man es tatsächlich mit Strings zu tun hat. Also einen String in eine Integer konvertieren. Oder eine Zahl zur Darstellung formatieren.

Bei dir war das mit dem String aber ein totaler Irrweg! 0x ist eine Anweisung an den Compiler wie er die Zahl danach interpretieren soll. Aber mit Strings hat das nichts zu tun