Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 十六进制转换为base58 btc时出错_Perl_Base Conversion - Fatal编程技术网

Perl 十六进制转换为base58 btc时出错

Perl 十六进制转换为base58 btc时出错,perl,base-conversion,Perl,Base Conversion,我正在使用的转换算法 许多良好的转换,例如:18e559fc6cb0e8de2ce8b50007d474a0d886208e698a07948671e0df520c1525被转换为2GBDRxOLPEHGF9ZD7ZW5UJK1QCopzoendBQJ22VJGQS,所有44位 错误转换:0ab3de5e16675aeb0c4831f5218901fec56f39cc8ad16e559be4a0ee211f5d0已转换为in9v3fi1cntd6qrymjq4r5bncjyz32xza6uj4

我正在使用的转换算法

  • 许多良好的转换,例如:
    18e559fc6cb0e8de2ce8b50007d474a0d886208e698a07948671e0df520c1525
    被转换为
    2GBDRxOLPEHGF9ZD7ZW5UJK1QCopzoendBQJ22VJGQS
    所有44位

  • 错误转换:
    0ab3de5e16675aeb0c4831f5218901fec56f39cc8ad16e559be4a0ee211f5d0
    已转换为
    in9v3fi1cntd6qrymjq4r5bncjyz32xza6uj4st
    ,43位

  • 其他错误:
    00000000000000000000000000000000000000000000000000 D0
    to
    111111111111114b

Perl代码有什么问题? 我可以在base58 btc中使用某种填充



PS:我可以使用
sudo apt get install libbase58-0
这样的东西。。。但是它需要一个Perl接口。

我建议您安装 或


这两个模块都有维护人员,如果您发现得到的结果不正确,他们会回答问题。我建议您安装 或


这两个模块都有维护人员,如果您发现与其他Conversor测试的结果不正确,他们会回答问题,因为所有这些模块都会产生相同且一致的结果

似乎。。。也许真正的问题是“base58比特币使用固定大小表示法?”我可以使用一些东西作为pad 1s吗

但它也是答案的一部分,而不是编辑问题(还原)并处理答案


。。。这是“不兼容”基(!)之间的转换,所以我认为这是不可能的 ...
58=2*29
不是
16=2^4
的倍数。。。仅当数字是2的倍数时。。。但是:

  • base50(“E”)=十六进制(“0D”);base58(“1E”)=十六进制(“000D”)。。。填充位数转换为多个

  • 填充的剪切/添加有什么问题?基准50(“E”)=十六进制(“D”);base58(“1E”)=十六进制(“D”);base50(“E”)=十六进制(“000000D”);base50(“1111 E”)=十六进制(“D”)。。。这似乎不是问题,所以可以使用填充算法(填充0或1)


解决方案:好的,让pad,fill 1s在转换时少于44位。

与其他Convers一起测试,结果相同且一致

似乎。。。也许真正的问题是“base58比特币使用固定大小表示法?”我可以使用一些东西作为pad 1s吗

但它也是答案的一部分,而不是编辑问题(还原)并处理答案


。。。这是“不兼容”基(!)之间的转换,所以我认为这是不可能的 ...
58=2*29
不是
16=2^4
的倍数。。。仅当数字是2的倍数时。。。但是:

  • base50(“E”)=十六进制(“0D”);base58(“1E”)=十六进制(“000D”)。。。填充位数转换为多个

  • 填充的剪切/添加有什么问题?基准50(“E”)=十六进制(“D”);base58(“1E”)=十六进制(“D”);base50(“E”)=十六进制(“000000D”);base50(“1111 E”)=十六进制(“D”)。。。这似乎不是问题,所以可以使用填充算法(填充0或1)


解决方案:好的,让pad,fill 1s在转换时少于44位。

你怎么知道它错了?您的第二个输入更小…@aschepler否,请自己检查,两个输入都是64位十六进制数字。@aschepler我用多个示例编辑了它,您如何知道它是错误的?您的第二个输入更小…@aschepler否,请自己检查,两个输入都是64位十六进制数字。@aschepler我用多个示例进行了编辑