In welcher Bibliothek(R8C) steck itoa

Gast #530687
Lesenswert?

Hallo

Ich programmiere in C den R8C.

Ich müsste einen Longint ein einen Hex umwandeln.
Dazu müsste  man doch in C den Befehl "itoa" verwenden?

Kann mir einer sagen in welcher Bibliothek der steckt?

Und wo man dies nachlesen kann wo dieser steckt. Die Hilfe findet den 
Befehl jedenfalls nicht.


Gruss

Heinojodler
Gast #530701
Lesenswert?

Hallo Katzeklo

Ich habe sie so eingefügt "#include "stdlib.h" wie die anderen 
Bibliotheken. Doch irgendwie findet der Compiler "High-Performance 
Embedded Shop" die nicht.

Mein Beispiel:

#include "sfr_r813.h"
#include "string.h"
#include "stdlib.h"
#include "stdio.h"

void Befehl_RDR(void)
{

  unsigned long int intTimerCVal;
  unsigned char HexwertV[7];

  ultoa(intTimerCIMp, HexwertV,16);
}

Gruss

Heinojodler
Gast #530722
Lesenswert?

Der Unterschied zwischen "" und <> gesteht daren, dass der Compiler bei 
dem einen nur im aktuellen und bei dem anderen in allen 
Biblioteksverzeichnissen sucht. Welches was macht kann ich aus dem Kopf 
nicht sagen.
Gast #530960
Lesenswert?

Hallo Marko

Ich habe jetzt sprintf probiert verschwendet aber gewaltig Resourcen.

Eigentlich müsste ich nur eine Funktion haben die einen "Long int" in 
einen "Hex-String" umwandelt.

Gibt es vielleicht der einen einfachen Source dazu hat?


Gruss

Heinojodler
Gast #531674
Lesenswert?

Hallo

Sorry aber mein wissen reicht im Moment nicht aus um dein Beispiel zu 
verstehen.

Ich habe hier einen Code gefunden der eigentlich geht. Aber nur für bis 
FFFF.

Kann mir jemand den Code so anpassen dass er auch für "long int" geht?
Ich habe es selber versucht, da ich aber de Code nicht ist es mir nicht 
gelungen ihn anzupassen dass er funktioniert. Es kann nur Müll raus.
"Long int" soll sollte doch 4 Byte haben.

Gruss

Gill Bates



// wandelt eineZahl in einen 4 Byte grossen HEX-String
void itohexa(unsigned int n, unsigned char * s)
{
  unsigned int help;
  unsigned int z;

  help = n;

  for (z=3;z>0;z--)
  {
    if ((help & 0x000F) > 9) s[z] = (help & 0x000F) + 55;
    else s[z] = (help & 0x000F) + '0';
    help = help >> 4;
  }

  s[4] = 0;
}
Gast #531735
Lesenswert?

So habe ich den Code abgeändert funktionert aber nicht.

void itohexa(unsigned long int n, unsigned char * s)
{
  unsigned long int help;
  unsigned long int z;
  help = n;

 for (z=7;z>0;z--)
 {
   if ((help & 0x0000000F) > 9) s[z] = (help & 0x0000000F) + 55;
   else s[z] = (help & 0x0000000F) + '0';
   help = help >> 8;
  }
  s[8] = 0;
}
#532000
Lesenswert?

Hi,

ich hoffe das ich das Problem richtig verstanden habe.

#include <stdio.h>

void itohexa(uint32_t n, uint8_t * s){
  for (int8_t z=7;z>-1;z--){
    if ((n & 0x0000000F) > 9){
      s[z] = (n & 0xF) + 55;
    }
    else{
      s[z] = (n & 0xF) + '0';
    }
    n >>= 4;
  }
  s[8] = 0;
}

int main(void){
  uint8_t buffer1[9];          // buffer von 0 bis 8 !!!
  itohexa(0xAA55FF, buffer1);
  uint8_t buffer2[9];          // buffer von 0 bis 8 !!!
  itohexa(0xFFAA5500, buffer2);
}

Gruß Rene
Gast #1484760
Lesenswert?

c=4294967295;       int i2;  int stellen=8; int basis=16;
 char h[20]="";char n[20]="00000000";
ltoa(c,h,basis); strcat(n,h); i2=strlen(n); //for 
(i1=i2-stellen;i1<i2;i1++){lcd_data(n[i1]);}

strncpy (h,n+i2-stellen,stellen);
textausgabe(h);
#2584510
Lesenswert?

>c=4294967295;       int i2;  int stellen=8; int basis=16;
> char h[20]="";char n[20]="00000000";
>ltoa(c,h,basis); strcat(n,h); i2=strlen(n); //for
>(i1=i2-stellen;i1<i2;i1++){lcd_data(n[i1]);}

>strncpy (h,n+i2-stellen,stellen);
>textausgabe(h);

Enter-Taste kaputt?

Gruß Jonas
Gast #2955868
Lesenswert?

Mit " " bindest du die Bibliothek des Projektverzeichnis ein, in dem du 
das Projekt abspeicherst. Das ist nur notwendig, wenn man Bibliotheken 
abändern will. Dazu kopiert man das Bibliothek-File ins eigene 
Verzeichnis.

Verwendest du die stinknormale, unveränderte Bibliothek, reicht es 
vollkommen aus, diese mit < > einzubinden.
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.