Printing string in hex?

No "oneliner", no. Besides, your code looks broken.

You can't use sizeof like that, you probably mean strlen().

And you need to cast the character to an unsigned type to be safe.

So, something like this, perhaps:

void print_hex(const char *s)
{
  while(*s)
    printf("%02x", (unsigned int) *s++);
  printf("\n");
}

Note that I don't call strlen(), since there's no point in iterating over the string twice when once will do. :)


I think technically "string" is misleading here; you seem to be printing an array (not necessarily null-terminated) of uint8_t values.

You will need a loop in any case. If you can use C99, you could write

for (size_t i = 0; i < sizeof(string); ++i) printf("%02x", string[i]);

If the array is null-terminated, and you don't need the original value of string (this is often a case when passing the pointer by value), you could have

static void printArray(const uint8_t *string)
{
  while (*string) printf("%02x", *string++);
}

Tags:

C

Hex

String