# # hex_to_base_32 # # Base conversion hex (32 digits) to base-32 (26 digits) # The main purpose of this subroutine is to shorten file names of checksums so that they don't exceed 28 characters. subroutine(hex_to_base_32(string hex_digits), ( v.hex_to_binary.0 = "0000"; v.hex_to_binary.1 = "0001"; v.hex_to_binary.2 = "0010"; v.hex_to_binary.3 = "0011"; v.hex_to_binary.4 = "0100"; v.hex_to_binary.5 = "0101"; v.hex_to_binary.6 = "0110"; v.hex_to_binary.7 = "0111"; v.hex_to_binary.8 = "1000"; v.hex_to_binary.9 = "1001"; v.hex_to_binary.a = "1010"; v.hex_to_binary.b = "1011"; v.hex_to_binary.c = "1100"; v.hex_to_binary.d = "1101"; v.hex_to_binary.e = "1110"; v.hex_to_binary.f = "1111"; v.binary_to_base32.00000 = "0"; v.binary_to_base32.00001 = "1"; v.binary_to_base32.00010 = "2"; v.binary_to_base32.00011 = "3"; v.binary_to_base32.00100 = "4"; v.binary_to_base32.00101 = "5"; v.binary_to_base32.00110 = "6"; v.binary_to_base32.00111 = "7"; v.binary_to_base32.01000 = "8"; v.binary_to_base32.01001 = "9"; v.binary_to_base32.01010 = "A"; v.binary_to_base32.01011 = "B"; v.binary_to_base32.01100 = "C"; v.binary_to_base32.01101 = "D"; v.binary_to_base32.01110 = "E"; v.binary_to_base32.01111 = "F"; v.binary_to_base32.10000 = "G"; v.binary_to_base32.10001 = "H"; v.binary_to_base32.10010 = "I"; v.binary_to_base32.10011 = "J"; v.binary_to_base32.10100 = "K"; v.binary_to_base32.10101 = "L"; v.binary_to_base32.10110 = "M"; v.binary_to_base32.10111 = "N"; v.binary_to_base32.11000 = "O"; v.binary_to_base32.11001 = "P"; v.binary_to_base32.11010 = "Q"; v.binary_to_base32.11011 = "R"; v.binary_to_base32.11100 = "S"; v.binary_to_base32.11101 = "T"; v.binary_to_base32.11110 = "U"; v.binary_to_base32.11111 = "V"; # debug_message("\n" . node_as_string("v.binary_to_base32") . "\n"); string binary_string = "00"; # We add two bits to have a final total of 130 bits to be converted to base-32 for (int i = 0; i < 32; i++) ( binary_string .= @("v.hex_to_binary." . substr(hex_digits, i, 1)); ); string base32_digits; int i = 0; while (i < 130) ( base32_digits .= @("v.binary_to_base32." . substr(binary_string, i, 5)); i = i + 5; ); int base32_digits_length = length(base32_digits); # debug_message("\nhex digits: $hex_digits (lenght: " . length(hex_digits) .")\n"); # debug_message("binary_string: $binary_string \n"); # debug_message("binary_string length: " . length(binary_string) . "\n"); # debug_message("base-32 digits: $base32_digits (length: " . length(base32_digits) . ")\n"); base32_digits; ));