我正在寻找一种简单且可逆的方式来用整数表示Julia字符串(例如用于加密)。为了清楚起见,我没有考虑像" 123"这样的整数的字符串表示,而是像" Hello"那样的任意字符串。该表示不需要是人类可读的,但它需要易于反转回一个唯一的字符串(因此不是哈希)。它不需要高效;我只是在寻找尽可能简单的东西。 (另外,如果它仅适用于小字符集,例如小写罗马字母,那就很好。)
一种天真的方式是将collect
字符串转换为字符向量,parse(Int, _)
将每个字符串转换为整数,并连接整数。但这看起来很麻烦,我怀疑内置的Julia功能(或小功能组合)可以更轻松地完成工作。
答案 0 :(得分:2)
如果您的字符串仅使用数字0-9
和字母a-z
和A-Z
,那么您可以直接将字符串解析为基数62 BigInteger:
julia> s = randstring(123)
"RFXkzD6VpWcwvbsxOtdTxS4DGcgciKgDXECa9fEK0Djcdkcj5N75vIHEMVyuH9mcYgvFbLhbPdrKyPIO4JsK1DKgZIacov6WKDZdIpGJ5iJ15dpjmcCBCybMmxB"
julia> i = parse(BigInt, s, base=62)
12798646956721889529517502411501433963894611324020956397632780092623456213685688389093681112679380669903728068303911743800989012987014660454736389459814982802097607808640628339365945710572579898457023165244164689548286133
julia> string(i, base=62)
"RFXkzD6VpWcwvbsxOtdTxS4DGcgciKgDXECa9fEK0Djcdkcj5N75vIHEMVyuH9mcYgvFbLhbPdrKyPIO4JsK1DKgZIacov6WKDZdIpGJ5iJ15dpjmcCBCybMmxB"
答案 1 :(得分:0)
我创建了一个适用于ASCII字符串的(有点复杂的)实现:
(CASE
WHEN
companies.mainSubcategory = '217'
THEN
companies.name
WHEN
companies.mainSubcategory = '216') AND
companies.id = company_event_associated_companies.company_id)
THEN
(SELECT companies.name FROM companies WHERE
companies.id = '332')
END ) AS 'Band'
如果你能想到更好的一个,请告诉我。