我正在尝试使用以下命令在终端中运行base58perl.pl:
perl base58perl.pl但我得到以下错误:
Cannot decode! Invalid Base58 Character(s)!代码如下:
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地址列表。
我也试过
chmod a+x base58perl.pl
perl base58perl.plbase58.txt内容:
1E5PBfSaFawBy1RjBHkS6FDtCwXkYSsVTo
1DCgptTS2uY2occbVdW1qcVT72T75RXbyg
1CUNEBjYrCn2y1SdiUMohaKUi4wpP326Lb 我仍然得到相同的错误。
发布于 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之前,您需要关闭它们。
while( my $base58_encoded_address = <$fhSrc>) {
chomp $base58_encoded_address;
my $binary_address = decodebase58tohex($base58_encoded_address);
say $fhDest $binary_address;
}发布于 2017-11-22 23:16:25
您可能需要删除空格。您似乎一次只将字符串的大块传递给了decode函数,这也可能是一个问题。将整个文件读取到一个var中,删除所有空格,然后解码。
my $base58_encoded_address = do { local $/; <$fhSrc> };
$base58_encoded_address =~ s/\s+//g;
my $binary_address = decodebase58tohex($base58_encoded_address);
say $fhDest $binary_address;发布于 2017-11-23 19:56:28
脚本现在工作正常,问题是使用记事本创建文件的base58.txt。我使用不同的文本编辑器创建了一个新文件。
https://stackoverflow.com/questions/47435250
复制相似问题