You are seeing the ffffff
because char
is signed on your system. In C, vararg functions such as printf
will promote all integers smaller than int
to int
. Since char
is an integer (8-bit signed integer in your case), your chars are being promoted to int
via sign-extension.
Since c0
and 80
have a leading 1-bit (and are negative as an 8-bit integer), they are being sign-extended while the others in your sample don’t.
char int c0 -> ffffffc0 80 -> ffffff80 61 -> 00000061
Here’s a solution:
char ch = 0xC0; printf("%x", ch & 0xff);
This will mask out the upper bits and keep only the lower 8 bits that you want.
Related Posts:
- printf() formatting for hexadecimal
- How to display hexadecimal numbers in C?
- How to convert decimal to hexadecimal in JavaScript
- How many spaces for tab character(\t)?
- What is a string of hexadecimal digits?
- Correct format specifier for double in printf
- Scanf/Printf double variable C
- Strings and character with printf
- What is the argument for printf that formats a long?
- What is the printf format specifier for bool?
- How to printf “unsigned long” in C?
- How I can print to stderr in C?
- Is there a printf converter to print in binary format?
- What does “%.*s” mean in printf?
- How to print a char array in C through printf?
- How to printf a memory address in C
- Data argument not used by format strings in C
- How can one print a size_t variable portably using the printf family?
- %i or %d to print integer in C using printf()?
- How can you print multiple variables inside a string using printf?
- error: aggregate value used where an integer was expected
- Why are hexadecimal numbers prefixed with 0x?
- How to print an unsigned char in C?
- How to tell if hex value is negative?
- C’s printf and fprintf(stdout,) are not printing
- Is there a way to have printf() properly print out an array (of floats, say)?
- What do numbers using 0x notation mean?
- How do you allow spaces to be entered using scanf?
- How to write to a file using open() and printf()?
- Using floats with sprintf() in embedded C
- Printf width specifier to maintain precision of floating-point value
- Which of sprintf/snprintf is more secure?
- Does C have a string type?
- Execution of printf() and Segmentation Fault
- printf format specifiers for uint32_t and size_t
- How to repeat a char using printf?
- Two decimal places using printf( )
- How do you format an unsigned long long int using printf?
- What primitive data type is time_t? [duplicate]
- Reading float using scanf in c
- How to format strings using printf() to get equal length in the output
- Reading float using scanf in c
- How to format strings using printf() to get equal length in the output
- What do \t and \b do?
- hexadecimal converting back into decimal
- write() to stdout and printf output not interleaved?
- How big can a 64 bit unsigned integer be?
- Convert hex color to RGB values in PHP
- The difference between n++ and ++n at the end of a while loop? (ANSI C)
- What is a segmentation fault?
- Implementing Taylor Series for sine and cosine in C
- Working on code to calculate cosine with factorial sum
- How to use execvp()
- How to use execvp() to execute a command
- How does strtok() split the string into tokens in C?
- warning: implicit declaration of function
- warning: implicit declaration of function
- What is *(uint32_t*)?
- What does (~0L) mean?
- pthread_join() and pthread_exit()
- What is size_t in C?
- What is the difference between float and double?
- what is Segmentation fault (core dumped)? [duplicate]
- What causes a segmentation fault (core dump) to occur in C?
- uint8_t vs unsigned char
- How to use symbols of extended ASCII table in C?
- Two questions about basic C programs
- What is the difference between ++i and i++?
- Using boolean values in C
- Transparent ARGB hex value
- What does “collect2: error: ld returned 1 exit status” mean?
- How to convert an int to string in C?
- typedef struct vs struct definitions [duplicate]
- How to print in C
- What is the effect of extern “C” in C++?
- Why should we typedef a struct so often in C?
- Why are #ifndef and #define used in C++ header files?
- Arrow operator (->) usage in C
- strdup() – what does it do in C?
- strdup() – what does it do in C?
- Why should we typedef a struct so often in C?
- What exactly is the difference between “pass by reference” in C and in C++?
- What is the difference between ++i and i++?
- What can be the reasons of connection refused errors?
- What does “collect2: error: ld returned 1 exit status” mean?
- How to convert an int to string in C?
- typedef struct vs struct definitions [duplicate]
- What is newline character — ‘\n’
- When to use extern “C” in simple words? [duplicate]
- Floating point exception( core dump
- Why does ENOENT mean “No such file or directory”?
- What does the question mark character (‘?’) mean?
- Cannot figure out how to use getchar(); in C
- Floating point exception (core dumped)
- Undefined reference to pthread_create in Linux
- what is the difference between uint16_t and unsigned short int incase of 64 bit processor?
- makefile:4: *** missing separator. Stop
- Stack smashing detected
- Why am I getting “void value not ignored as it ought to be”?
- Compiler Error “void value not ignored as it ought to be” in C programming [duplicate]