在perl中交换两个字节

时间:2014-05-19 01:38:56

标签: perl byte reverse swap

我试图在文件中一次交换两个字节。所以我想我一次可以读取两个字节并使用reverse来切换字节。但是我不确定如何在perl中一次读取两个字节。有人可以提出建议

2 个答案:

答案 0 :(得分:1)

一次读取两个字节非常低效。您应该继续一次读取更大的块并处理缓冲区中的字节。

$buf =~ s/(.)(.)/$2$1/sg;

$buf = pack 'S<*, unpack 'S>*', $buf;

答案 1 :(得分:0)

使用“read”(http://perldoc.perl.org/functions/read.html)读取并传递“2”表示LENGTH参数读取2个字节(默认情况下)的数据。

出于性能原因,如果您有一个大文件,您可能需要考虑读取更多(或者全部)文件一次,而不是调用read((filesize in bytes)/ 2)次。