将整数转换为基数 26,使用 a 到 z 作为数字

2024-03-10

我需要实现一个十进制到字符的转换器。我有 26 个可用字符,所以它是将整数转换为基数 26 系统,然后将每个数字更改为其对应的字母表。我不想在最终结果字符串中使用字符 0-9。我可以用to_s()方法如下:

82.to_s(26)  #=> "34" / which gives me "de"
120.to_s(26)  #=> "4g" / which should give me "aep", but it's not

Ruby to_s()方法返回的值的格式没有帮助。数字 82 转换得很好,但转换 120 返回一个我不知道如何处理的值。

谁能解释一下我如何才能使 120 转换(作为示例)返回aep相等的?换句话说,如何从十进制转换为 26,但在输出中不使用数字?


Ruby's Fixnum#to_s( base ) and String#to_i( base )用于表示不同基数的数字。不过,您不能使用任意字符,它们被设计为与十六进制和 base64 等约定兼容。

如果您没有转换为不同的基数,而只是将十进制数字编码为字母并返回,那么您只需要一个简单的替换即可:

46.to_s.tr( "0123456789", "abcdefghijk" )
=> "eg"

"eg".tr( "abcdefghijk", "0123456789" ).to_i
=> 46

所以,如果你想做both,并使用 a-z 表示以 26 为基数的数字:

46.to_s(26).tr( "0123456789abcdefghijklmnopq", "abcdefghijklmnopqrstuvwxyz" )
=> "bu"

"bu".tr( "abcdefghijklmnopqrstuvwxyz", "0123456789abcdefghijklmnopq" ).to_i(26)
=> 46
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将整数转换为基数 26,使用 a 到 z 作为数字 的相关文章

随机推荐

  • Bash:无限睡眠(无限阻塞)

    I use startx启动 X 它将评估我的 xinitrc In my xinitrc我使用启动窗口管理器 usr bin mywm 现在 如果我终止我的 WM 为了测试其他 WM X 也会终止 因为 xinitrc脚本到达 EOF 所
  • 如何让 ServiceStack 身份验证发挥作用? (使用 iPhone 客户端)

    我们聘请了一名承包商 他正在为我们编写 iPhone 应用程序 我开始使用 ServiceStack 为其编写后端服务 我在一般授权方面遇到了困难 使用什么样的授权以及如何实现它 我对 ServiceStack HTTP 和授权不太了解 还
  • JFormattedTextField 中严格的 24 小时时间

    我正在尝试创建一个仅接受 24 小时时间的 JFormattedTextField 我非常接近解决方案 但有一种情况以下代码示例不起作用 如果输入时间 222 并从字段中更改焦点 时间将更正为 2202 我希望它只接受完整的 4 位数 24
  • 为 SQL Server 中的特定记录生成脚本

    这可能是一个有限但有价值的场景 我有一个 SQL Server 2008 数据库 其中有一个包含数百万条记录的表 一些记录似乎存在间歇性问题 我正在尝试重现该问题 为了做到这一点 我终于获得了违规记录的 ID 我想在我的 PROD 数据库中
  • 如何从 C# 代码重新启用 Gmail 中的弹出功能?

    我有一个从 Gmail 下载邮件的程序 我选择了单选按钮 为所有邮件启用 POP 甚至是已下载的邮件 下载邮件后 我的 Gmail 将上述状态更改为 对自当前日期以来到达的所有邮件启用 POP 我没有物理更改单选按钮 但它似乎自动将其设置为
  • 如何在剑道网格中加载大量数据

    网页方法
  • calloc(4, 6) 与 calloc(6, 4) 相同吗?

    我是一名初学者 C 程序员 我认为情况会如此 但如果可能的话希望得到一些肯定 如果它们是相同的 为什么不只取一个参数呢 之间没有真正的区别calloc a b and calloc b a 尽管如此 它们都分配相同数量的空间并适当填充它 元
  • 嵌套名称说明符

    我有一个类似的代码 namespace mymap template
  • 可拖动元素的包含

    如何定义可拖动对象的包含区域以使其可拖动到其父元素之外 我有两个可放置的容器 其中有可拖动的 div 我想在容器之间拖动包含的 div 但是 div 落在父容器的边框下方 而不是穿过父容器的边框 如果我设置了非常高的 z 索引 我只能让 d
  • 如何在 HTML5 Canvas 中使用动态旋转值绘制水印?

    我正在使用 HTML5 我正在尝试使用文本在图像上绘制水印 我有以下代码 div style width 612px height 792px div
  • 可可中的自定义主应用程序循环

    我一直在关注 Handmade Hero 项目 其中 Casey Muratori 从头开始 创建了一个完整的游戏引擎 而不使用库 该引擎具有高度可移植性 因为它呈现自己的位图 然后平台特定的代码将其绘制到屏幕上 在 Windows 下 通
  • C++ 类中的内联规则是什么?

    从我很久以前读到的内容来看 如果您希望在编译阶段内联类成员函数 则该函数必须在类声明块内定义 但这有一个缺点 那就是细节泄露 恕我直言 其他程序员在打开 h 文件时应该只看到类接口 第一个陈述在现代 C 中仍然正确吗 有没有办法强制内联声明
  • 错误:“已加载运行时 CuDNN 库:5005 但源是用 5103 编译的”是什么意思?

    我尝试将 TensorFlow 与 GPU 结合使用 但出现以下错误 I tensorflow core common runtime gpu gpu device cc 838 Creating TensorFlow device gpu
  • 在 ZF2 中创建具有依赖关系(依赖注入)的学说存储库

    我想创建一个具有硬依赖关系的存储库 我发现Jurian Sluisman 的这篇博文 https juriansluiman nl article 142 dependency injection in a doctrine reposit
  • Windows 在哪里存储 INI 文件的替代文件 (Delphi 7)

    我通常使用保存在应用程序自己的文件夹中的 INI 文件来编写 Delphi 应用程序 ConfigFile ChangeFileExt ParamStr 0 ini IniFile TIniFile Create ConfigFile tr
  • 表单中的第一个参数不能包含 nil 或为空 - Rails 4

    我在 Rails 中的联系表单中收到此错误 First argument in form cannot contain nil or be empty View and so on 控制器 def new contact Contact n
  • 基于属性值的条件 Json 模式验证

    我的输入 json 如下所示 results name A testA testAValue 条件是 如果 name 的值为 A 则 testA 应为必填字段 如果 name 的值为 B 则 testB 应为必填字段 这是我尝试过的 Jso
  • 当我的应用程序最大化时,自动隐藏任务栏不会出现

    我的应用程序绘制了自己的所有窗口边框和装饰 它适用于设置为自动隐藏的 Windows 任务栏 除非我的应用程序窗口最大化 任务栏不会 卷起 如果我的应用程序未最大化 即使尺寸一直到屏幕底部 它也会正常运行 如果我只是调整窗口大小以占据整个显
  • 将标准输入复制到标准输出

    我正在寻找一种 bash 单行代码 可以将标准输入复制到标准输出而不需要交错 到目前为止我找到的唯一解决方案是使用tee 但这确实产生了交错输出 我这样说是什么意思 如果例如一份文件f reads a b 我想执行 cat f HERE B
  • 将整数转换为基数 26,使用 a 到 z 作为数字

    我需要实现一个十进制到字符的转换器 我有 26 个可用字符 所以它是将整数转换为基数 26 系统 然后将每个数字更改为其对应的字母表 我不想在最终结果字符串中使用字符 0 9 我可以用to s 方法如下 82 to s 26 gt 34 w