Binary to hex faster than xxd, part 2 of 2 |
Binary to hex faster than xxd, part 2 of 2 |
static void flush(void) {
if (writeall(1, buf, buflen) == -1) _exit(errno);
buflen = 0;
}
static void wrch(const char ch) {
if (buflen >= sizeof buf) flush();
buf[buflen++] = ch;
return;
}
char inbuf[128];
int main(int argc, char **argv) {
long long r, i;
for (;;) {
r = read(0, inbuf, sizeof inbuf);
if (r == -1) _exit(errno);
if (r == 0) break;
for (i = 0; i < r; ++i) {
wrch("0123456789abcdef"[15 & (inbuf[i] >> 4)]);
wrch("0123456789abcdef"[15 & inbuf[i]]);
}
}
wrch('\n');
return 0;
}