当前位置: 首页 > 知识库问答 >
问题:

在Julia中用整数表示非数值字符串

江文斌
2023-03-14

我正在寻找一个简单和可逆的方法来表示一个整数的Julia字符串(例如密码学)。明确地说,我考虑的不是像“123”这样的整数的字符串表示,而是像“hello”这样的任意字符串表示。表示不需要是可读的,但它需要容易地反向回到唯一的字符串(所以不是哈希)。它不需要高效;我只是在找尽可能简单的东西。(此外,如果它只适用于小字符集,例如小写罗马字母,也很好。)

一种简单的方法是将字符串收集到一个字符向量中,将(Int,_)每个字符解析为一个整数,并将整数连接起来。但这似乎很麻烦,我怀疑内置的Julia函数(或函数的小组合)将更容易完成工作。

共有1个答案

公冶同
2023-03-14

如果字符串只使用数字0-9和字母a-za-z,则可以直接将字符串解析为base 62 biginteger:

julia> s = randstring(123)
"RFXkzD6VpWcwvbsxOtdTxS4DGcgciKgDXECa9fEK0Djcdkcj5N75vIHEMVyuH9mcYgvFbLhbPdrKyPIO4JsK1DKgZIacov6WKDZdIpGJ5iJ15dpjmcCBCybMmxB"

julia> i = parse(BigInt, s, base=62)
12798646956721889529517502411501433963894611324020956397632780092623456213685688389093681112679380669903728068303911743800989012987014660454736389459814982802097607808640628339365945710572579898457023165244164689548286133

julia> string(i, base=62)
"RFXkzD6VpWcwvbsxOtdTxS4DGcgciKgDXECa9fEK0Djcdkcj5N75vIHEMVyuH9mcYgvFbLhbPdrKyPIO4JsK1DKgZIacov6WKDZdIpGJ5iJ15dpjmcCBCybMmxB"
 类似资料:
  • NowCoder 题目描述 // true "+100" "5e2" "-123" "3.1416" "-1E-16" // false "12e" "1a3.14" "1.2.3" "+-5" "12e+4.3" 解题思路 使用正则表达式进行匹配。 // html [] : 字符集合 () : 分组 ? : 重复 0 ~ 1 次 + : 重复 1 ~ n 次 * :

  • 1.2.2 非数值数据的表示 计算机除了具有进行数值计算能力之外,还具有进行非数值计算的能力。现在,后者的应用领域已远远超过了前者的应用领域,如:文字处理、图形图象处理、信息检索、日常的办公管理等。所以,对非数值信息的编码就显得越加重要。 1、ASCII码 ASCII码(American Standard Code for Information Interchange)是目前应用极其广泛的一种信

  • 一、题目 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。 例子说明 例如,字符串“+100”,“5e2”,“-123”,“3.1416”及”-1E-16”都表示数值,但“12e”,”1a3.14”,”1.2.3”,”+-5”及“12e+5.4”都不是。 二、解题思路 在数值之前可能有一个表示正负的’-‘或者’+’。接下来是若干个0到9的数位表示数值的整数部分(在某些小数里可能没有数值

  • 本实例演示了如何通过NumberFormat类的parse方法解析数值字符串、货币字符串和百分数字符串。 例子 : 解析表示数值的字符串 实例的代码如下: package chapter8; import java.text.NumberFormat; import java.text.DecimalFormat; import java.text.FieldPosition; import ja

  • 问题内容: 当尝试取一个整数并将其前缀为“ b”并将其转换为字符串时,出现此错误: 与此功能有关: 问题答案: name = ‘b’ + str(num) 要么 如S.Lott所述,Python 3及更高版本不建议使用混合运算符’%’。我从INTERCAL那里窃取了“混合”这个名称,但这就是我谈论它的方式,并希望至少在印刷品上看到它一次(就像渡渡鸟一样),它从地球表面消失了。

  • 问题内容: 所以我可以这样做: 但是我找不到办法。我想做类似的事情: 这也不起作用: 问题答案: Swift 2.0 您可以使用构造函数初始化Integer