我想将字符串编码为数字,并使用其他函数从该数字中检索原始字符串。它只需要支持0到255之间的ascii字符,而不是unicode。数字可以是整数或浮点数。
考虑将ascii值乘以位置和256,然后添加结果,但不确定这是否有效。
字符串的长度最多为240个字符。
预期用途是将字符串值转换为数值以用于机器学习算法;因为许多机器学习算法需要数值而不是字符串值。
答案 0 :(得分:-1)
function str2num
(
p_string in varchar2
) return number is
l_i number(15);
l_c number(15);
l_answer number(38);
begin
l_answer := 0;
for l_i in 1..length(p_string) loop
l_c := ascii(substr(p_string, l_i, 1));
l_answer := l_answer + (l_c * power(2, (l_i - 1) * 8));
end loop;
return l_answer;
end str2num;
只能处理52个字符,但足够好。现在的问题是,相反的功能是什么。
答案 1 :(得分:-3)
假设起始位置为1:
ASCII VALUE * 256 ^(位置 - 1)
字符串可以多长时间?数值可能会非常高!
如果您正在谈论的字符串是"有限" (在数量上)和重复的(例如单词或句子)你可以在表格中写入它们(id bigint,descr VARCHAR(240))并使用id作为数字。你觉得怎么样?