标签: base-n

在Perl中执行base36算法的最佳方法是什么?

在Perl中执行base36算法的最佳方法是什么?

更具体地说,我需要能够做到以下几点:

  • 在基数为36的正N位数字上运算(例如数字为0-9 AZ)

    N是有限的,比如说9

  • 提供基本算术,至少以下3:

    • 加法(A + B)

    • 减法(AB)

    • 整个部门,例如楼层(A/B).

    • 严格来说,我真的不需要base10转换能力 - 数字将100%的时间在base36中.所以我很好,如果解决方案没有实现从base36转换回base10,反之亦然.

我不太关心解决方案是否是暴力"转换为基础10并返回"或转换为二进制,或者一些更优雅的方法"本地"执行baseN操作(如上所述,往返于base10转换不是需求).我唯一的三个注意事项是:

  1. 它符合上述最低规格

  2. 这是"标准".目前我们正在使用基于base10转换的老本土模块,这种模块是手动完成的,这种模块很糟糕,很糟糕.

    我宁愿用一些常用的CPAN解决方案取而代之,而不是从头开始重新编写自己的自行车,但如果不存在更好的标准可能性,我完全有能力构建它.

  3. 它必须是快速的(虽然不是闪电般快).需要1秒才能总结2个9位数的base36数字的东西比我自己可以滚动的任何东西都差:)

PS只是提供一些上下文,以防人们决定解决我的XY问题,除了回答上面的技术问题:)

我们有一个相当大的树(作为一堆边存储在DB中),我们需要在该树的子集上叠加顺序.树的尺寸在深度和宽度方面都很大.树非常积极地更新(插入和删除以及分支移动).

目前这是通过具有3列的第二个表来完成的:parent_vertex, child_vertex, local_order其中local_order是由A-Z0-9构建的9个字符的字符串(例如,基数36的数字).

其他考虑因素

  • 要求每个孩子的本地订单是唯一的(并且每个父母显然是唯一的),

  • 父母的任何完整的重新排序都有些昂贵,因此实现是尝试为具有X个子节点的父节点分配在0到36**10-1之间有些均匀分布的顺序,因此几乎没有树插入导致完全重新排序.

math perl base-n

6
推荐指数
2
解决办法
1657
查看次数

Java:使用大数据大小的通用BaseN编码器/解码器

我在Java中寻找一个不错的BaseN编码器(带有自定义字符集),不受输入数据大小(字节数组)的限制.

像这样的东西:

https://github.com/mklemm/base-n-codec-java

但对于"无限制"的数据长度没有任何不必要的内存/性能损失和"BigInteger滥用魔法".只是作为标准BASE64编码器工作的东西,但普遍适用于任何基础/字符集.任何解决方案或想法如何实现这一点都受到欢迎.

也许,如果有人有apache BaseNCodec的经验:

https://commons.apache.org/proper/commons-codec/apidocs/org/apache/commons/codec/binary/BaseNCodec.html

它看起来很有前景,但它是一个抽象类,并且可用的实现看起来比从头开始看起来更难.


我需要它的二进制数据,自定义字符集编码器(其中字符的集合中的数量是可变的,"ABCDE" = Base5,"ABCDE-+*/." = Base10,...).
更新: 来自GitHub(上图)的"Base N Codec"似乎有些错误,所以我最后使用了以下代码:

https://dzone.com/articles/base-x-encoding

java string encoder converter base-n

5
推荐指数
1
解决办法
1177
查看次数

base-n系列生成器,用于java中的给定数字,

我想创建一个程序来生成给定base-n的系列.,例如,如果我的输入是2,那么系列应该是00,01,10,11等,(二进制)如果我的输入是10,那么系列应该是1,2,3,4,5等.,(十进制)

是否有任何一般机制来找到这些数字,以便我可以为base-n编程.

更新: - 之后,锻炼.,我面临问题.

如果我想处理那个整数怎么做?有人评论说,我应该使用BaseInteger类.请详细说明

java base-n

3
推荐指数
1
解决办法
2022
查看次数

标签 统计

base-n ×3

java ×2

converter ×1

encoder ×1

math ×1

perl ×1

string ×1