用Lua实现将十六进制数字串转换成二进制数字串。
代码:
-- Convert hex to binary
local hex_bin_map = {
['0'] = "0000", ['1'] = "0001", ['2'] = "0010", ['3'] = "0011",
['4'] = "0100", ['5'] = "0101", ['6'] = "0110", ['7'] = "0111",
['8'] = "1000", ['9'] = "1001", ['a'] = "1010", ['b'] = "1011",
['c'] = "1100", ['d'] = "1101", ['e'] = "1110", ['f'] = "1111"
}
function hexToBinary(hexString)
local isPass, value, failMsg = true, nil, nil
value, _ = hexString:gsub("(%x)(%x)[ ]?", function (h, l)
return string.format("%s%s",hex_bin_map[string.lower(h)], hex_bin_map[string.lower(l)])
end)
value = value or ''
return isPass, value, failMsg
end
测试:
print(hexToBinary("29562300"))
结果:
true 00101001010101100010001100000000 nil
Hex: 29562300 -> Bin: 00101001010101100010001100000000