30 lines
1.1 KiB
C
30 lines
1.1 KiB
C
/* Copyright (c) 2015 Ryan Castellucci, All Rights Reserved */
|
|
#ifndef __BRAINFLAYER_HEX_H_
|
|
#define __BRAINFLAYER_HEX_H_
|
|
|
|
static const unsigned char unhex_tab[80] = {
|
|
0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xbb, 0xcc, 0xdd, 0xee,
|
|
0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
};
|
|
|
|
static inline unsigned char *
|
|
unhex(unsigned char *str, size_t str_sz,
|
|
unsigned char *unhexed, size_t unhexed_sz) {
|
|
int i, j;
|
|
for (i = j = 0; i < str_sz && j < unhexed_sz; i += 2, ++j) {
|
|
unhexed[j] = (unhex_tab[str[i+0]&0x4f] & 0xf0)|
|
|
(unhex_tab[str[i+1]&0x4f] & 0x0f);
|
|
}
|
|
return unhexed;
|
|
}
|
|
|
|
unsigned char * hex(unsigned char *, size_t, unsigned char *, size_t);
|
|
|
|
#endif /* __BRAINFLAYER_HEX_H_ */
|
|
/* vim: set ts=2 sw=2 et ai si: */
|