summaryrefslogtreecommitdiffstats
path: root/util.c
diff options
context:
space:
mode:
Diffstat (limited to 'util.c')
-rw-r--r--util.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/util.c b/util.c
index dc13866..6ddc2b4 100644
--- a/util.c
+++ b/util.c
@@ -16,21 +16,25 @@ void hex2bin(const char *data, int length, unsigned char *buf)
length ^= 0x01;
while(i < length) {
+ b = 0;
+
if(data[i] - '0' < 10)
- b = data[i++] - '0';
+ b = data[i] - '0';
else if(data[i] - 'a' < 7)
- b = data[i++] - 'a' + 10;
+ b = data[i] - 'a' + 10;
else if(data[i] - 'A' < 7)
- b = data[i++] - 'A' + 10;
+ b = data[i] - 'A' + 10;
+ i++;
b = (b << 4);
if(data[i] - '0' < 10)
- b |= data[i++] - '0';
+ b |= data[i] - '0';
else if(data[i] - 'a' < 7)
- b |= data[i++] - 'a' + 10;
+ b |= data[i] - 'a' + 10;
else if(data[i] - 'A' < 7)
- b |= data[i++] - 'A' + 10;
+ b |= data[i] - 'A' + 10;
+ i++;
*p++ = b;
}
@@ -46,6 +50,8 @@ void bin2hex(const unsigned char *data, int length, char *buf)
char *p = buf;
for(i = 0; i < length; i++) {
+ b = 0;
+
b = (data[i] >> 4 & 0x0f);
b += (b < 10) ? '0' : ('a' - 10);
*p++ = b;