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?