HEX to DEC konverzió

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
Avatar
HPMaster
Bitmanipulátor
Hozzászólások: 138
Csatlakozott: 2008. március 10. hétfő, 6:00

HEX to DEC konverzió

Hozzászólás Szerző: HPMaster »

Ü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: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: HEX to DEC konverzió

Hozzászólás Szerző: kapu48 »

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

Re: HEX to DEC konverzió

Hozzászólás Szerző: HPMaster »

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: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: HEX to DEC konverzió

Hozzászólás Szerző: kapu48 »

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

Re: HEX to DEC konverzió

Hozzászólás Szerző: HPMaster »

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.
Válasz küldése