aboutsummaryrefslogtreecommitdiffstats
path: root/src/libkeccak/hex.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/libkeccak/hex.c23
1 files changed, 7 insertions, 16 deletions
diff --git a/src/libkeccak/hex.c b/src/libkeccak/hex.c
index 866cc8e..64afef8 100644
--- a/src/libkeccak/hex.c
+++ b/src/libkeccak/hex.c
@@ -34,10 +34,8 @@ void libkeccak_behex_lower(char* restrict output, const char* restrict hashsum,
output[2 * n] = '\0';
while (n--)
{
- char a = (hashsum[n] >> 4) & 255;
- char b = (hashsum[n] >> 0) & 255;
- output[2 * n + 0] = "0123456789abcdef"[a];
- output[2 * n + 1] = "0123456789abcdef"[b];
+ output[2 * n + 0] = "0123456789abcdef"[(hashsum[n] >> 4) & 15];
+ output[2 * n + 1] = "0123456789abcdef"[(hashsum[n] >> 0) & 15];
}
}
@@ -54,10 +52,8 @@ void libkeccak_behex_upper(char* restrict output, const char* restrict hashsum,
output[2 * n] = '\0';
while (n--)
{
- char a = (hashsum[n] >> 4) & 255;
- char b = (hashsum[n] >> 0) & 255;
- output[2 * n + 0] = "0123456789ABCDEF"[a];
- output[2 * n + 1] = "0123456789ABCDEF"[b];
+ output[2 * n + 0] = "0123456789ABCDEF"[(hashsum[n] >> 4) & 15];
+ output[2 * n + 1] = "0123456789ABCDEF"[(hashsum[n] >> 0) & 15];
}
}
@@ -77,15 +73,10 @@ void libkeccak_unhex(char* restrict output, const char* restrict hashsum)
char a = hashsum[2 * n + 0];
char b = hashsum[2 * n + 1];
- if (a >= 'a') a -= 'a' - 9;
- else if (a >= 'A') a -= 'A' - 9;
- else a -= '0';
+ a = (char)((a & 15) + (a > '9' ? 9 : 0));
+ b = (char)((b & 15) + (b > '9' ? 9 : 0));
- if (b >= 'a') b -= 'a' - 9;
- else if (b >= 'A') b -= 'A' - 9;
- else b -= '0';
-
- output[n] *= (a << 4) | b;
+ output[n] = (char)((a << 4) | b);
}
}