首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法解码!无效的Base58字符!

无法解码!无效的Base58字符!
EN

Stack Overflow用户
提问于 2017-11-22 20:52:11
回答 4查看 2.4K关注 0票数 3

我正在尝试使用以下命令在终端中运行base58perl.pl

代码语言:javascript
复制
perl base58perl.pl

但我得到以下错误:

代码语言:javascript
复制
Cannot decode! Invalid Base58 Character(s)!

代码如下:

代码语言:javascript
复制
my $fileSrc = 'base58.txt';
open my $fhSrc, $fileSrc or die "Could not open $fileSrc: $!";

my $fileDest = 'hex.txt';
open( my $fhDest, '>>', $fileDest) or die "Could not open file $fileDest: $!";

while ( my $base58_encoded_address = <$fhSrc >)  {   
    my $binary_address = decodebase58tohex($base58_encoded_address);
    say $fhDest $binary_address;
}

close $fhSrc;
close $fhDest;

base58.txt的内容是base58格式的BTC地址列表。

我也试过

代码语言:javascript
复制
chmod a+x base58perl.pl
perl base58perl.pl

base58.txt内容:

代码语言:javascript
复制
1E5PBfSaFawBy1RjBHkS6FDtCwXkYSsVTo
1DCgptTS2uY2occbVdW1qcVT72T75RXbyg
1CUNEBjYrCn2y1SdiUMohaKUi4wpP326Lb 

我仍然得到相同的错误。

EN

回答 4

Stack Overflow用户

发布于 2017-11-22 21:53:14

该错误消息来自您链接的代码中的unbase58函数。

芯片“无法解码!无效的Base58字符!\n”除非$bitcoin_address =~ /^1-9A-HJ-NP-Za-km-z*$/;

该行检查输入是否只包含字符组[1-9A-HJ-NP-Za-km-z]的字符。既然你的输入是这样的,那么它肯定不喜欢其他东西。

我的猜测是它不喜欢您的行尾的换行符。在将值传递给decodebase58tohex之前,您需要关闭它们。

代码语言:javascript
复制
while( my $base58_encoded_address = <$fhSrc>)  {   
    chomp $base58_encoded_address;
    my $binary_address = decodebase58tohex($base58_encoded_address);
    say $fhDest $binary_address;
}
票数 0
EN

Stack Overflow用户

发布于 2017-11-22 23:16:25

您可能需要删除空格。您似乎一次只将字符串的大块传递给了decode函数,这也可能是一个问题。将整个文件读取到一个var中,删除所有空格,然后解码。

代码语言:javascript
复制
my $base58_encoded_address = do { local $/; <$fhSrc> };
$base58_encoded_address =~ s/\s+//g;
my $binary_address = decodebase58tohex($base58_encoded_address);
say $fhDest $binary_address;
票数 0
EN

Stack Overflow用户

发布于 2017-11-23 19:56:28

脚本现在工作正常,问题是使用记事本创建文件的base58.txt。我使用不同的文本编辑器创建了一个新文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47435250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档