Wie kann ich am schnellsten einen Textstring in einen Hexstring umwandeln ?
Christian Fricke
> Wie kann ich am schnellsten einen Textstring in einen Hexstring umwandeln ?
echo "Hallo Welt" | hex
	Tschau,
	    Ingo
echo Textstring | od -tu1
-- 
Was ist schon schnell?
Sicherlich nicht am schnellsten, aber auch ne Möglichkeit:
text2hex "Hello World"
>48656C6C6F20576F726C64
[snip cat text2hex.pl]
#!/usr/bin/perl -w
printf("%02s",uc(unpack"H*",join(" ",@ARGV))."\n");
[snip]
MfG
-- 
"Die Geschichte wiederholt sich nicht, wohl aber die Leichtfertigkeit,
mit der sie gemacht wird." [W.Weidner]
-http://www.malerwerkst.at-     (slow)
Programmiersprache:
[  ] C
[  ] C++
[  ] Perl
[  ] Bash
> Christian Fricke wrote:
> 
> 
>>Hallo,
>>
>>Wie kann ich am schnellsten einen Textstring in einen Hexstring umwandeln
>>?
>>
>>Christian Fricke
>>
> 
Programmiersprache:
[x] C
[ ] C++
[ ] Perl
[ ] Bash
Christian Fricke
[...]
> Programmiersprache:
> [x] C
> [ ] C++
> [ ] Perl
> [ ] Bash
> 
> 
> Christian Fricke
Sorry Christian,
kann Dir leider nur in Fortran / Basic helfen...
#include <stdio.h>
int main()
{
  int c;
  while(EOF != (c = getchar()))
    printf("%02x", c);
  return 0;
}
-- 
Im übrigen finde ich Checkboxen menschenverachtend.
>>>Wie kann ich am schnellsten einen Textstring in einen Hexstring
>>>umwandeln?
Was heisst "am schnellsten"? Schnell bei der Programmierung oder schnell
bei der Ausfuehrung?
 
>Programmiersprache:
>[x] C
#include <stdio.h>
void string2hex(char *ibuf, char *obuf, int max)
{
static char hextab[] = {"0123456789ABCDEF"};
  while (max--)
  {
    if (!*ibuf) return;
    *obuf = hextab[(*ibuf >> 4) & 0x0F];
    obuf++;
    *obuf = hextab[*ibuf & 0x0F];
    obuf++;
    *obuf = ' ';
    obuf++;
    ibuf++;
  }
}
int main(int argc, char *argv[])
{
char inbuf[1000], outbuf[3000];
  printf("String: ");
  fgets(inbuf, 1000, stdin);
  printf("\n");
  string2hex(inbuf, outbuf, 1000);
  printf("%s\n", outbuf);
  return 0;
}
Ob Folgendes "am schnellsten" ist? Vermutlich ist die Verwendung von
snprintf() ziemlich teuer. Es spricht natuerlich nichts dagegen, sich
etwas "eigenes" zu basteln.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
int main ()
{
    char *textstring = "Das Pferd frisst keinen Gurkensalat";
    char *source;
    char *hexstring;
    char *target;
    hexstring = (char*)malloc(strlen(textstring)+1);
    assert(hexstring);
    source = textstring;
    target = hexstring;
    while (*source) {
	snprintf(target, 3, "%hX", source[0]);
	source++;
	target = target+2;
    }
    *target = '\0';
    printf("%s\n", hexstring);	/* Erfolgskontrolle */
    exit(0);
}
--Cornelius.
-- 
/* Cornelius Krasel, U Wuerzburg, Dept. of Pharmacology, Versbacher Str. 9 */
/* D-97078 Wuerzburg, Germany   email: kra...@wpxx02.toxi.uni-wuerzburg.de */
/* "Science is the game we play with God to find out what His rules are."  */
Das meinst du jetzt nicht ernst, oder?