CGI-BBS > CGI > Perl > 8ビットデータを2つに分割したい


カレッヂ
カレッヂ


質問者 kmk_loc  投稿日 7/22(火) 18:47:01
はじめまして。いつも拝見させてもらってます。

今、私は1文字(asciiコード)のデータ8ビットを、
上位4ビットと下位4ビットに分けようと頑張っているのですが、
うまく行きません。

例) 0x41(01000001) ---> 0x08(0100) と 0x01(0001)

上位4ビットについては、

$bin_data >> 4;

と右にシフトしてやることで実現できたのですが、
下位4ビットがどうして良いのか分かりません。
一応

$bin_data << 4;
$bin_data >> 4;

な感じで、左にシフトさせてから元に戻せば
良いかとも思いましたが、変な値が帰ってくるだけでした。
何か良い案があれば、教えてください

プロバイダ参照:
サーバのOS:UNIXサーバ
パソコンのOS:UNIX
エディタ:emacs
FTPソフト:
サーバ移転:していない
改造:していない
CGI習熟度:middle

回答者 まさ  [削除]  投稿日 7/22(火) 20:04:07
マスク処理をすればいいでしょう。

データが
1011 0110
でマスクデータを
0000 1111
としてこのANDをとれば
0000 0110
とデータの下位4ビットが取り出せます。

マスクデータを
1111 0000
として同じくANDをとれば
1011 0000
で右に4ビットシフトさせれば上位4ビットを取り出せます。

質問者 kmk_loc  [削除]  投稿日 7/28(月) 14:27:48
お返事ありがとうございます!
早速試してみたところうまく行きました。
丁寧に解答していただいて本当にありがとうございました。
又よろしくお願いします

このページは終了したので返信(回答)は書きこめません
 


Web裏技