Unixの覚え書きと日々の生活

izuminix

IPアドレスによる経路選択 | main |
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
| スポンサー広告 | --:-- |
Perlのビット演算子
 最初からUnixとは直接関係ないが、とりあえずは関連という事で。
 Perlのビット演算子はCと同様に使用できる

$a = 63;
$b = 240;
$c = $a & $b; # $cは48


 そして、文字列の場合はキャラクタコードとして解釈される。

$a = "ABC";
$b = "XYZ";
$c = $a & $b; # $cは"@@B"

 そのため、ファイル等から取得した数値のつもりの文字列をビット演算しようとすると意図しない結果となる。

$a = "63";
$b = "240";
$c = $a & $b; # $cは"20"

 なので、int関数で変換して演算する必要がある。

$a = "63";
$b = "240";
$c = int( $a ) & int( $b ); # $cは48

 これに気付かなくてなぜうまく動作しないのかかなり悩んでしまった。
 文字列をビット演算できるなんて思いもしなかったからなぁ…
 原因がわかってからもこれまで明示的に型を指定する事なんてなかったから解決方法がなかなか想像できず。
 『変換』をキーワードに検索したりしてなんとかint()関数に辿り着き、これなら整数として扱ってくれるだろうと考えてテストしたらやっと予想通りの結果となった。
スポンサーサイト
| Perl | 17:12 | トラックバック:0 | コメント:0
コメント
コメントする














管理者にだけ表示を許可する

この記事のトラックバックURL
http://izuminix.blog117.fc2.com/tb.php/1-05a33705
この記事にトラックバックする(FC2ブログユーザー)
トラックバック
| ホーム |

プロフィール

izumi

Author:izumi
FC2ブログへようこそ!

FC2カウンター

最近の記事
カテゴリー
月別アーカイブ
最近のコメント

最近のトラックバック

ブロとも申請フォーム
ブログ内検索

リンク
RSSフィード
.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。