HEX to DEC konverzió

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Avatar
HPMaster
Bitmanipulátor
Hozzászólások: 138
Csatlakozott: 2008. március 10. hétfő, 6:00
Tartózkodási hely: Budapest IX. ker

HEX to DEC konverzió

HozzászólásSzerző: HPMaster » 2018. július 31. kedd, 8:55

Üdv!

A gondom a következő: string formátumban megadott HEX értéket szeretnék egy az egyben átadni egy portnak.

Milyen módon lehet elérni azt, hogy a string formátumban lévő 1byte-nyi érték (pl.: E5) decimális (vagy bármilyen numerikus) értékké alakuljon?

Köszi a válaszokat!
HP

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3231
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: HEX to DEC konverzió

HozzászólásSzerző: kapu48 » 2018. július 31. kedd, 10:05

Itt van 2 oda vissza konvertáló fügvény:

Kód: Egész kijelölése

// Converting from Hex to Decimal:

// NOTE: This function can handle a positive hex value from 0 - 65,535 (a four digit hex string).
//       For larger/longer values, change "unsigned int" to "long" in both places.


unsigned int hexToDec(String hexString) {
 
  unsigned int decValue = 0;
  int nextInt;
 
  for (int i = 0; i < hexString.length(); i++) {
   
    nextInt = int(hexString.charAt(i));
    if (nextInt >= 48 && nextInt <= 57) nextInt = map(nextInt, 48, 57, 0, 9);
    if (nextInt >= 65 && nextInt <= 70) nextInt = map(nextInt, 65, 70, 10, 15);
    if (nextInt >= 97 && nextInt <= 102) nextInt = map(nextInt, 97, 102, 10, 15);
    nextInt = constrain(nextInt, 0, 15);
   
    decValue = (decValue * 16) + nextInt;
  }
 
  return decValue;
}





// Converting from Decimal to Hex:

// NOTE: This function can handle a positive decimal value from 0 - 255, and it will pad it
//       with 0's (on the left) if it is less than the desired string length.
//       For larger/longer values, change "byte" to "unsigned int" or "long" for the decValue parameter.


String decToHex(byte decValue, byte desiredStringLength) {
 
  String hexString = String(decValue, HEX);
  while (hexString.length() < desiredStringLength) hexString = "0" + hexString;
 
  return hexString;
}

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
 
    uint8_t num = hexToDec("0xFD");
  Serial.println(num);
}

void loop() {
  // put your main code here, to run repeatedly:

}

ezeket hívod a loop-ból.

Avatar
HPMaster
Bitmanipulátor
Hozzászólások: 138
Csatlakozott: 2008. március 10. hétfő, 6:00
Tartózkodási hely: Budapest IX. ker

Re: HEX to DEC konverzió

HozzászólásSzerző: HPMaster » 2018. július 31. kedd, 13:31

Köszönöm kolléga Úr!

Én is valami hasonló megoldásra jutottam. Mondjuk a Tiéd lényegesen szebb köntösben van :D

Az a helyzet, hogy én nemigen erőltettem ezidáig az arduino mint programozó köznyezet használatát, de mostmár van tapasztalatom is, hogy miért nem használom.
A BASCOMban csak egy HEXVAL függvényt kell alkalmazni erre a feladatra...

Borzasztó, hogy mennyire körülményes ennek a felületnek a használata.
Vagy csak én vagyok már nagyon elkényelmesedve a BASCOM több éves használata után? :)

Még jobban beleásom magam a LunaAVR-be és akkor kb mindenre képes leszek.

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3231
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: HEX to DEC konverzió

HozzászólásSzerző: kapu48 » 2018. július 31. kedd, 18:20

Máskor ne az arduinos fórumban teddfel a kérdésedet, ha bascomos megoldást vársz! :(

Avatar
HPMaster
Bitmanipulátor
Hozzászólások: 138
Csatlakozott: 2008. március 10. hétfő, 6:00
Tartózkodási hely: Budapest IX. ker

Re: HEX to DEC konverzió

HozzászólásSzerző: HPMaster » 2018. augusztus 1. szerda, 7:02

Félre értettél.
Arduinós a kérdés (tudom merre vagyok arcal előre).
A bascomot csak példának hoztam fel az arduino nyelvezetével szemben.

Mindenesetre segítettél (mint mindíg), köszönöm.


Vissza: “Arduino / C-nyelvű programozás (AVR-Duino, EthDuino, Arduino, Diecimila)”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég