Hey. Ich möchte in Arduino HEX in Dezimalzahlen umwandeln.
Habe im Internet bereits 3 Stunden etwas vernünftiges gesucht, und nix gefunden. Daher schickt mir bitte nicht irgendeinen Code einer Website, da ich diesen sowieso schon kennen werden.
Angenommen du hättest eine Hexadezimal zahl X mit n Stellen benannt x1 bis xn (also 0xx1x2..xn) dann ist X im 10er system = xn * 16^0 + x(n-1) * 16^1 + ... + x2 * 16^(n-2) + x1 * 16^(n-1). Als Summe also Sum (xi * 16^(n-i)) i=1 to n
Also als konkretes Beispiel die Zahl 0xF3A mit x1 = F = 15 x2 = 3 und x3 = A =10 wäre damit
10*1 + 3*16 + 15*16^2 = 3898
Das Programmieren davon solltest du selbst hinbekommen
Kleine Hintergrundinfo (die man sich auch hätte ergoogeln können) zu warfleys Beispiel:
Jede Stelle einer Zahl hat eine Wertigkeit. Diese Wertigkeit nennt man Basis. Im Dezimalsystem ist die Basis 10, deshalb kann man ja auch z.B. die Zahl 25 als 2*10 + 5*1 darstellen. Im Hexadezimalsystem ist es die 16, im Dezimalsystem, wie gesagt, die 10, im Oktalsystem die 8 und im Binärsystem die 2. Und wenn du möchtest, kannst du auch jedes andere Zahlensystem zu jeder Basis definieren.
Die Wertigkeit der Ziffern steigt exponentiell an. z.B. 1 10 100 1000 10000 100000, auch darstellbar als 10^0 10^1 10^2 10^3 10^4 10^5 für das Dezimalsystem. Aber auch z.B. im Binären 1 2 4 8 16 ...
2^0 2^1 2^2 2^3 2^4 ... usw. Bei allen anderen auch.
Du kannst jede Zahl ins Dezimalsystem umrechnen, in dem du jede Stelle der Originalzahl mit ihrer Basis multiplizierst. 0xFA wäre somit 15 * 16^1 + 10 * 10^0. 0x31 wäre 3 * 16^1 + 1*10^0. etc.
Vom Dezimalsystem in ein anderes Zahlsystem zu kommen ist auch sehr einfach, aber danach hast du ja nicht gefragt.
int main() {
long long decimalNumber=0;
char hexDigits[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8',
'9', 'A', 'B', 'C', 'D', 'E', 'F'};
char hexadecimal[30];
int i, j, power=0, digit;
printf("Enter a Hexadecimal Number\n");
scanf("%s", hexadecimal);
/* Converting hexadecimal number to decimal number */
for(i=strlen(hexadecimal)-1; i >= 0; i--) {
/*search currect character in hexDigits array */
for(j=0; j<16; j++){
if(hexadecimal[i] == hexDigits[j]){
decimalNumber += j*pow(16, power);
}
}
power++;
}
printf("Decimal Number : %ld", decimalNumber);
return 0;
}
Herzlichen Glückwunsch Mr Copy&Paste. Du hast für diesen Beitrag sicherlich nichtmal 20 Sekunden gebraucht und musstest dabei noch nicht mal den Topic vollständig lesen. Wahnsinn. Vielleicht schreibst du freundlicherweise noch dazu, das so diesen herzlos Copy&Pasteten Quellcode von dieser Seite geklaut hast:
Was möchtest du genau machen?
In C kannst du mit Dezimalzahlen genau so rechnen wie mit Hexzahlen.
Ausgeben kannst du die Hexadezimalzahlen auch direkt im Dezimalsystem mit %i im printf oder als Hexzahl mit 0x als Präfix oder ohne.
Was möchtest du genau machen?
In C kannst du mit Dezimalzahlen genau so rechnen wie mit Hexzahlen.
Ausgeben kannst du die Hexadezimalzahlen auch direkt im Dezimalsystem mit %i im printf oder als Hexzahl mit 0x als Präfix oder ohne.
Wie oben bereits erwähnt: Die C von Arduino.
Ich möchte dem Bildschirm eine neue Farbe setzen.
Dieses kann ich mit HEX Zahlen, möchte es aber mit Dezimalzahlen machen.
(Arduino kann nur 12BIT Hex Zahlen)
Ich glaube du hast mich nicht verstanden, Hex und Dezimalzahlen sind exakt das selbe, nur die darstellung ändert sich:
Code:
int i = 0xFFF;
// ist das selbe wie
int i = 4095;
Diese beiden zahlen machen exakt das selbe, beide schreiben die zahl 4095 in die variable i
Du musst nichts umwandeln
Oke ich erläutere meine komplette Aufgabe nochmal.
Ich gebe in meinem Seriellen Monitor einen HTML Color Code ein.
Diesen muss ich irgendwie speichern (Problem 1)
Dann muss ich diesen Color Code, welcher als "FFFFFF" oder "00FFFF" gespeichert wird, als Bildschirmfarbe setzen. Dabei dachte ich an
eine Methode, welche diesen "Datentyp?" zu einer Dezimalzahl umformt
der datentyp dürfte ganz einfach ein char-array sein.
schreibst dir dann eine methode, welche über jedes char geht und diese dann je nach wertigkeit in ein int umrechnet und am ende halt das int returned.
code könnte ungefähr so aussehen:
Code:
int convert(char* arr, int size){
int result = 0;
for(int i = 0; i < size; i++){
int tmp = 0;
//hier code für A-F erkennung
result += tmp * pow(base, power);
}
return result;
}
die umrechnung von hex auf dezimal system wurde ja vorher schon erklärt, deswegen sollte sich power und base selbst ergeben. in diesem fall wäre es also 16 und eine power von 0,1,2.
// let str be the given string e.g. str = "FF3A5D"
union {unsigned long iCol, byte rgba[4]} col;
sscanf(str, "%x", &col.iCol);
// In col.rgba[0] is blue
// In col.rgba[1] is green
// In col.rgba[2] is red
// In col.iCol is the combined color
Aber das funktioniert so nur auf nem little endian system (also nicht auf nem x86 ausprobieren, da wirds nicht gehen)
mumbi Funksteckdosen mit dem Arduino ein- und ausschalten? 05/09/2015 - Technical Support - 2 Replies Hallo,
gestern habe ich mir folgendes Set Funksteckdosen gekauft.
http://www.amazon.de/gp/product/B002UJKW7K?psc=1& amp;r...
Diese wollte ich nun mit meinem Arduino ein- und ausschalten, allerdings
bekomme ich es einfach nicht hin und wollte euch deswegen um Rat fragen.
Zuerst habe ich natürlich eine Steckdose mit der Fernbedienung gekoppelt
Arduino Fernbedienung 05/15/2014 - Coders Trading - 0 Replies Liebe Community,
ich hätte eine kleine Bitte, ich habe einen Programm für einen Arduino Uno geschrieben für ein Schulprojekt. Da ich noch ein ganzes Set mit Zubehör für diesen Arduino hatte, und bei diesem eine Fernbedienung dabei war, würde ich gerne die 8 LEDs per Fernbedienung (4 mit einem Knopf der Fernbedienung, 2 mit einem anderen und die letzten 2 auch mit einem anderen Knopf) steuern. Ich habe mich jetzt schon Stunden im Internet informiert wie dies funktioniert. Da ich bis jetzt noch...
RF ARduino 05/28/2013 - RF Online - 2 Replies |RF Arduino PVP Server 2.2.3.2|
Server Akan UP Tanggal 26 Mei 2012 Pukul 10.00 WIB
|-Server Rate-|
- Level 75
- Exp 2500x | Drop 45x | Animus 90.000x | Mining 45x |
- All Reward Quest ON | Quest 50 & 56 OFF | All PT Skill/Force GM |
- Buff Skill & Job 9000 Second
- New Map | New Monster | New Animus | New Siege | New MAU |
[VB 2008] Textbox that doesn't shows decimal values!!? 06/02/2011 - .NET Languages - 0 Replies Hi,
Can someone post a code witch will stop the textbox from showing decimal values?
PS: textbox will show the result of a math
The Decimal for these effect's? 08/29/2010 - CO2 Private Server - 25 Replies Well,
In C3/effect/other/ there are 2 folders Frost_app and Frost_end, Can someone please tell me what there Decimal/hex is ex:
FrostStart = 0x000003857,
Froztend = 0x2030230032;
Could you explain how you got the answer to if possbile.
Thanks a million,