创建一个例程,该例程采用一个数字基本系统中的块数组,然后将其转换为另一数字基本系统中的块数组。from和to系统都是任意的,应该接受为参数。输入数组可以是任意长度(如果使用的语言中数组长度不随数组存储,例如C,则应将length参数传递给函数)。
它的工作方式如下:
fromArray = [1, 1]
fromBase = 256
toBase = 16
result = convertBase(fromArray, fromBase, toBase);
哪个应该返回[0, 1, 0, 1]
或可能返回[1, 0, 1]
(前导0
s是可选的,因为它们不会更改答案的值)。
以下是一些测试向量:
身份测试向量
fromArray = [1, 2, 3, 4] fromBase = 16 toBase = 16 result = [1, 2, 3, 4]
平凡的测试向量
fromArray = [1, 0] fromBase = 10 toBase = 100 result = [10]
大测试向量
fromArray = [41, 15, 156, 123, 254, 156, 141, 2, 24] fromBase = 256 toBase = 16 result = [2, 9, 0, 15, 9, 12, 7, 11, 15, 14, 9, 12, 8, 13, 0, 2, 1, 8]
真正的大测试向量
fromArray = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] fromBase = 2 toBase = 10 result = [1, 2, 3, 7, 9, 4, 0, 0, 3, 9, 2, 8, 5, 3, 8, 0, 2, 7, 4, 8, 9, 9, 1, 2, 4, 2, 2, 3]
非偶数基向量
fromArray = [41, 42, 43] fromBase = 256 toBase = 36 result = [1, 21, 29, 22, 3]
其他标准/规则:
对于所有合理的输入范围,所有整数变量都应在标准的32位带符号整数内。
您可以转换为中介表示形式,只要中介不过是32位带符号整数的数组。
可以处理2到256个基数。不需要支持比此更高的基数(但是,如果您愿意的话,一定可以)。
期望处理输入和输出大小至少为1000个元素。缩放到2 ^ 32-1个元素的解决方案会更好,但是1000个就可以了。
这不一定与拥有满足这些规则的最短代码有关。这是关于拥有最干净,最优雅的代码。
现在,这并不是一件容易的事,因此可以接受几乎可行的答案!