Von String mit Hex zu long:
#include <stdlib.h>
void setup()
{
// anderer code hier
char in[] = "00CCA7F6";
long out = strtol(in, NULL, 16);
// anderer code hier
}
Von String mit Hex zu long:
#include <stdlib.h>
void setup()
{
// anderer code hier
char in[] = "00CCA7F6";
long out = strtol(in, NULL, 16);
// anderer code hier
}
Na toll -.-
und ich hab mich schon darüber aufgeregt, dass es nicht wie überall sonst eine Funktion dafür gibt.
So richtig schön zum spielen hat das jemand hier gemacht:
http://www.arndt-bruenner.de/mathe/scripts/Zahlensysteme.htm
Werni:
Hi MaFu,
out = out << 4 + in[t];
hat nicht funktioniert.
*16 aber schon.
Jetzt funktionert es.
Vielen Dank euch beiden,Grüße
Werni
War für mich wohl noch zu früh am Morgen.
Der Shift-Operator hat eine niedrigere Rangfolge, es muss also so lauten:
out = (out << 4) + in[t];
Also zum mitschreiben wäre das hier die Lösung???
void setup() {
Serial.begin(9600);
char in[] = "00CCA7F6";
//To DEZ
int Zahlensystem = 16;
int length = sizeof(in)-1;
long out = 0;
char newIn[length];
for (byte t=0; t < length; t++) {
Serial.print(in[t]); Serial.print(" ");
if (in[t]>='0' && in[t]<='9')
in[t] -= '0';
if (in[t]>='A' && in[t]<='F')
in[t] -= 'A'-10;
if (in[t]<10) Serial.print(" ");
Serial.print(in[t], DEC); Serial.print(" * 16^");
out = (out << 4) + in[t];
Serial.print(length - t - 1, DEC);
Serial.print(" = ");
Serial.println(in[t] * pow(Zahlensystem, length - t - 1));
}
Serial.println("------------");
Serial.println(out, DEC);
}