gpt4 book ai didi

perl - 逐位读取二进制文件

转载 作者:行者123 更新时间:2023-12-01 05:10:53 27 4
gpt4 key购买 nike

有没有办法可以一点一点地读取二进制文件,而不将其保存为数组?

我有一个非常大的二进制文件,我需要一点一点地读取它。并将其保存为数组需要很多时间,所以我想防止这种情况。我不在乎文件内容发生了什么。

$size = stat($args{file});
my $vector;
open BIN, "<$args{file}";
read(BIN, $vector, $size->[7], 0);
close BIN;

# The code below is the part that takes a lot of time.
my @unpacked = split //, (unpack "B*", $vector);
return @unpacked;

最佳答案

使用特殊的 $/ 一次读入文件 1 个字节变量,然后使用按位运算符检查字节中的每一位。最终应该是这样的:

$/ = \1; # read 1 byte at a time
while(<>) {
my $ord = ord($_);

# for each bit in the byte
for(1 .. 8) {
if($ord & 1) {
# do 1 stuff
}
else {
# do 0 stuff
}

# move onto the next bit
$ord >>= 1;
}
}

关于perl - 逐位读取二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25122969/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com