1.假設(shè)這是要驗(yàn)證的字符串
const char *checkstr = "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff64039c77092cfabe6d6d4dc2b4ca02160026eba172fc0de949d2ac678aa7de35077bad43409b3d3a2ffc10000000f09f909f00124d696e6564206279207265616c746f7074760000000000000000000000000000000000000000000000000005";
- 查詢表
static const int hex2bin_tbl[256] = {
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1,
-1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
};
- 功能函數(shù)
static bool valid_hex(char *s)
{
bool ret = false;
int i, len;
if (unlikely(!s)) {
applog(LOG_ERR, "Null string passed to valid_hex from");
return ret;
}
len = strlen(s);
for (i = 0; i < len; i++) {
unsigned char idx = s[i];
if (unlikely(hex2bin_tbl[idx] < 0)) {
applog(LOG_ERR, "Invalid char 0x%x passed to valid_hex from", idx);
return ret;
}
}
ret = true;
return ret;
}
4.調(diào)用
if (!valid_hex(checkstr))