Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » hex byte string zu charstring umwandeln

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] [ 2 ] [ 3 ] > 4 <
030
17.01.2005, 20:10 Uhr
Diablo



hmpf.. den ganzen tag programmiert und nix dabei rausgekommen!
gab es schon tote beim programmieren?

hier mein problem:

C++:
#include <iostream.h>
#include <windows.h>
#include <stdio.h>
#include <ctype.h>

/* Funktionsprototyp */
unsigned uzahl(char *s, int l);

int main()
{
unsigned char rcv[1] = {0};
unsigned char rcv2[1] = {0};
char zahlstring[12]={0x37,0x38};
  unsigned zahl;
  int i;

  i=0;
  while (i<12)  
    { if (isdigit(zahlstring[i]))
         i++;
      else
         break;
    }
  cout << "Ausgangszahlen: "<<endl;
  for (int t=0; t<i; t++)
  
  printf ("%02x \n", zahlstring[t]);
  printf ("\n");            
  zahl = uzahl(zahlstring, i);
  cout << "Ergebnis: " << zahl<<endl;
  memset(rcv+0,zahl,1);
  printf ("Ergebnis in hex: %02x o.O\n", rcv[0]);
  char rcv1[1];
  sprintf(rcv1,"%02x",zahl);
  cout<<rcv1<<endl;
  memcpy(rcv2+0,rcv1+0,2);
  cout<<rcv2[0]<<endl;
  cout<<rcv2[0]<<rcv2[1]<<endl;
  return 0;
}

unsigned uzahl(char *s, int l)
{
  unsigned z=0;
  int i;
  int basis=10;
  for (i=0; i<l; i++)
    {
       if (!isdigit(s[i]))
          return 0;
       z = basis * z + (s[i]-'0');
    }
  return z;
}



hier hab ich VERGEEEBLICH versucht "2bytes" in eins zu stopfen!
am anfang hab ich die zwei bytes 37 38, die die zahl 78 darstellen sollen, und die zahl
"78" soll später als HEX ZAHL in rcv2 stehn!

das ist ja noch hinzubekommen... aber kriminell wirds wenn ich anfangs die bytes 37 und 63 hab
oder zb. 37 & 9c!!
ich brauch nämlich buchstaben und nicht nur zahlen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
031
13.02.2005, 14:48 Uhr
Diablo



ich renn dem problem leider immer noch hinterher

ich habs mal so probiert:

C++:
unsigned uzahl(char *s, int l)
{
  unsigned z=0;
  int i;
  int basis=10;
  for (i=0; i<l; i++)
    {
       if (!isalnum(s[i]))
          return 0;
       z = basis * z + (s[i]-'0');
    }
  return z;
}


geht aber nicht

am anfang hab ich zum bsp.:
char hex[2] = "9c";
und dieser wert soll in unsigned char umgewandelt werden, dass ich am ende
unsigned char hex2 = {0x9c};
darstehen hab!

wie stell ich das bloß an?!?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
032
13.02.2005, 17:52 Uhr
Oliver
S2-Pixelgeneral


www.fun-soft.de/showtopic.php?threadid=9135

PS: Die Suchfunktion ist schon ne praktische Erfindung.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
033
13.02.2005, 18:11 Uhr
Diablo



hab schon rausgefunden
hier mein code:

C++:
        char* x = "";
        DWORD v = (strtoul(argv[i], &x, 0x10) & 0xff);


gut, das es c++ gibt mit dem c-term wär ich gestorben!
thx
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] [ 3 ] > 4 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: