如何将10位数字缩小为2个字符

时间:2018-11-28 11:19:22

标签: sql oracle algorithm

我的输入包含五个字符的大写英文字母,例如ABCDE,我需要将其转换为两个字符的唯一ASCII输出。 例如ABCDEZZZZZ都应提供两个不同的输出

我已经从ABCDE转换为十六进制,从而得到4142434445,但是我可以从中获得所需的两个字符的输出值吗?

示例:
INPUT1 = ABCDE
转换为十六进制= 4142434445

INPUT2 = 4142434445
输出= ??任何2个ASCII字符

INPUT1的其他示例=

BIRAL
BRMAL
KLAAX

1 个答案:

答案 0 :(得分:6)

所以您要以5位数的26开头的数字,并想将其压缩为以n为底的2位数方案?

所有可能的1-5位以26为基数的数字为您提供26 ^ 5 = 11,881,376的数字空间。

因此,您需要最小值n,其中n ^ 2> = 11,881,376。

哪个给你3446。

现在,您可以自行决定在UTF中的某个位置找到合适的字形块,在其中可以可靠地阻止3446个单独的字符用作新的基础/字母。并构造一个从5个字符为基数的26 ABCDE类型号到2个字符为基数3446的wierd-glyph编号的映射。祝你好运。

因为只有128个可打印字符,所以ASCII的变化不够多。将自己限制为2个字符的ASCII码意味着您只能寻址16384的数字空间。