Index: xz/debug/hex2bin.c |
=================================================================== |
--- xz/debug/hex2bin.c (revision 0) |
+++ xz/debug/hex2bin.c (revision 0) |
@@ -0,0 +1,53 @@ |
+/////////////////////////////////////////////////////////////////////////////// |
+// |
+/// \file hex2bin.c |
+/// \brief Converts hexadecimal input strings to binary |
+// |
+// Author: Lasse Collin |
+// |
+// This file has been put into the public domain. |
+// You can do whatever you want with this file. |
+// |
+/////////////////////////////////////////////////////////////////////////////// |
+ |
+#include "sysdefs.h" |
+#include <stdio.h> |
+#include <ctype.h> |
+ |
+ |
+static int |
+getbin(int x) |
+{ |
+ if (x >= '0' && x <= '9') |
+ return x - '0'; |
+ |
+ if (x >= 'A' && x <= 'F') |
+ return x - 'A' + 10; |
+ |
+ return x - 'a' + 10; |
+} |
+ |
+ |
+int |
+main(void) |
+{ |
+ while (true) { |
+ int byte = getchar(); |
+ if (byte == EOF) |
+ return 0; |
+ if (!isxdigit(byte)) |
+ continue; |
+ |
+ const int digit = getchar(); |
+ if (digit == EOF || !isxdigit(digit)) { |
+ fprintf(stderr, "Invalid input\n"); |
+ return 1; |
+ } |
+ |
+ byte = (getbin(byte) << 4) | getbin(digit); |
+ if (putchar(byte) == EOF) { |
+ perror(NULL); |
+ return 1; |
+ } |
+ } |
+} |
Property changes on: xz/debug/hex2bin.c |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |