Perl 十六进制转换为base58 btc时出错
我正在使用的转换算法Perl 十六进制转换为base58 btc时出错,perl,base-conversion,Perl,Base Conversion,我正在使用的转换算法 许多良好的转换,例如:18e559fc6cb0e8de2ce8b50007d474a0d886208e698a07948671e0df520c1525被转换为2GBDRxOLPEHGF9ZD7ZW5UJK1QCopzoendBQJ22VJGQS,所有44位 错误转换:0ab3de5e16675aeb0c4831f5218901fec56f39cc8ad16e559be4a0ee211f5d0已转换为in9v3fi1cntd6qrymjq4r5bncjyz32xza6uj4
- 许多良好的转换,例如:
被转换为18e559fc6cb0e8de2ce8b50007d474a0d886208e698a07948671e0df520c1525
,所有44位2GBDRxOLPEHGF9ZD7ZW5UJK1QCopzoendBQJ22VJGQS
- 错误转换:
已转换为0ab3de5e16675aeb0c4831f5218901fec56f39cc8ad16e559be4a0ee211f5d0
,43位in9v3fi1cntd6qrymjq4r5bncjyz32xza6uj4st
- 其他错误:
to00000000000000000000000000000000000000000000000000 D0
111111111111114b
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我用多个示例进行了编辑