| #include "stdio.h" |
| #include "stdlib.h" |
| |
| /** |
| * Reads hexadecimal values from stdin and writes binary bytes to stdout. |
| * Accepts hex values separated by spaces, newlines, commas, etc. |
| * Handles both uppercase and lowercase hex digits. |
| */ |
| int main(void) { |
| char hexStr[3]; // Two hex digits + null terminator |
| int ch; |
| |
| // Read characters until EOF |
| while((ch = getchar()) != EOF) { |
| hexStr[0] = (char)ch; |
| hexStr[1] = (char)getchar(); |
| hexStr[2] = '\0'; // Null-terminate string |
| char *endptr; |
| unsigned char byte = (unsigned char)strtol(hexStr, &endptr, 16); |
| fwrite(&byte, 1, 1, stdout); |
| if((ch = getchar()) == EOF) // Read seaparating space |
| break; |
| } |
| |
| return 0; |
| } |