Print character array as hex in C
18,231
Solution 1
You are confused about the fuctionality of strtol
. If you have a string that represents a number in hex, you can use strtol
like you have:
char s[] = "ff2d";
int n = strtol(s, NULL, 16);
printf("Number: %d\n", n);
When you trying to print the characters of a string in hex, use %x
format specifier for each character of the string.
char s[] = "Hello";
char* cp = s;
for ( ; *cp != '\0'; ++cp )
{
printf("%02x", *cp);
}
Solution 2
Use %x flag to print hexadecimal integer
example.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char *string = "hello", *cursor;
cursor = string;
printf("string: %s\nhex: ", string);
while(*cursor)
{
printf("%02x", *cursor);
++cursor;
}
printf("\n");
return 0;
}
output
$ ./example
string: hello
hex: 68656c6c6f
reference
Related videos on Youtube
Author by
neby
Updated on September 15, 2022Comments
-
neby over 1 year
I have a 2D array called
char **str
(allocated by malloc). Lets say str[0] has the string "hello". How would I print that hex?I tried
printf("%d\n", (unsigned char)strtol(str[0], NULL, 16))
, but that doesn't print it out in hex.Any help would be appreciated, thank you!
-
yelliver over 8 yearspossible duplicate of Printing hexadecimal characters in C
-
-
neby over 8 yearsThank you as well! The links really helped and always nice to see different ways to do the same thing. Also, the same question above what does the 02 do in
%02x
? -
amdixon over 8 years02 is just zeropadding so in the event the hexadecimal integer was less than 2 bytes long eg. 9 then it would print 09.. not really required for the alpha characters as these are all in the two byte hexadecimal range
-
not2qubit almost 5 yearsCan you explain the cursor thing? Also, this will give you compiler error unless you change
*string
tostring[]
.