如何在Perl中反转无符号字节的位?

时间:2015-12-17 12:04:01

标签: perl

例如,数字178应转换为字母" M"。

178是10110010.

反转所有位应该给01001101,即77或" M"作为一个角色。 我教过如何使用反向功能,但我不知道如何在@array上使用它。

falsy

我在这里计算十六进制值的总和,但问题是我想要反转字节值。

3 个答案:

答案 0 :(得分:1)

只需将数组传递给函数,即可在数组上调用reverse()。但是,像所有Perl函数一样,您不能在函数字符串中放置函数调用。而不是

print { $fh_out } "reverse @sum\n";

你想:

print { $fh_out } reverse(@sum), "\n";

此处需要@sum周围的括号,以防止换行符包含在reverse的参数中。

答案 1 :(得分:0)

最短时间我可以提出反转是~pack "C", 178(eta:但是你的标题和文字对于是否要翻转或反转它们来说非常混乱,你的位模式具有相同的结果对于两者而言,这通常不一样)。在后一种情况下,可以做pack "B8", scalar reverse unpack "B8", pack "C", 178,只是不要忘记添加注释; - )。

答案 2 :(得分:0)

这反转了位:

<?php
$imgSrc = "https://pbs.twimg.com/profile_images/638751551457103872/KN-NzuRl.png";
echo "<img src=" . $imgSrc . " style='height: 50px; width: 50px'/>";
?>

这反转了位:

>perl -E"say pack 'C', ~178 & 0xFF"
M

这反转了位:

>perl -E"say pack 'B8', unpack 'b8', pack 'C', 178"
M