No.2ベストアンサー
- 回答日時:
当たり前すぎて、あまり答えたくはないけど、、、、
元々フラグを利用する理由は、限られた容量の中で、高速に処理させるために考案されたもの、、、あ~もっと歴史は深いか。。。
どちらにしてもフラグを文字列にしてしまっては、何の意味もない。文字列にするくらいなら、配列のほうが使い勝手がいいでしょう。
どうしても文字列がいいってんなら、{} で一文字単位で取り出せるんだから、'10011'{1} == 1 とかでよろい。
# データって元々数値のはずだけど、PHP などの出現で文字列だって考える人が増えとるのかな。文字列なんてデータ表現の一つに過ぎないのに。。。文字化けとかで悩むのもやっぱその辺から来てるのかな。。。
↑はいいとして、フラグはその値を整数値に格納して、ビット演算することで、その効果を発揮しる。
$flag = 0x13;
if ($flag & 0x01) echo '0番目のフラグは on です';
if ($flag & 0x02) echo '1番目のフラグは on です';
if ($flag & 0x03) echo '0,1番目のフラグは on です';
又は、
if ($flag & 0x02 | 0x01) echo '0,1番目のフラグは on です'; // (1)
# (1) http://jp2.php.net/manual/ja/domdocument.load.php など、$option を OR でつなげとはこういうこと。
特定フラグの on/off は XOR
ビット位置指定はシフト。
No.5
- 回答日時:
「Cookieを圧縮したい」という質問に「64進数→2進数の変換を行えば、圧縮できる」とbabu_babooさんが回答されているのを思い出しました、
保存データの圧縮方法 | OKWave
http://okwave.jp/qa/q5790194.html
> 10011という文字列を それぞれ切っていくという方法しかが浮かんだのですが
配列にしてみては、どうでしょう?
<?php
$flag_num = 10;// 2進数で格納したフラグ
$flag_arr = str_split(decbin($flag_num));// 2進数に変換→配列にする
header('Content-Type: text/plain; charset=UTF-8');
var_dump($flag_arr);
?>
str_split
http://www.phpmanual.jp/function.str-split.html
No.4
- 回答日時:
>> 2
自分で string に変換してれば、string として扱われるのが正常。
[quote]
string decbin ( int $number )
[/quote]
ちなみに strlen も内部で、toString を呼び出している。
# これ以上アホなこといわんでくれ。もう突っ込まんぞ。
No.3
- 回答日時:
んー、ゴミプロ書いてみたんですけど、PHPの中で二進数はStringとして扱われるっぽいですね。
なので、俺も ぶつ切りしか思いつきませんでした。
<?
$dec = 30;
$bin = decbin($dec);
print "$dec " . gettype($dec) . "<br>";
print "$bin " . gettype($bin) . "<br>";
for($i=0;$i<(strlen($bin));$i++) {
$bit = $bin[$i] ? "true" : "false";
print $bit . "<br>";
}
?>
アセンブラライクな方法をお望みでしたら、#2さんの方法で。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
○分から○時間○分に変換
-
文字列の置換をCStringで(C++)
-
文字列の括弧について(初心者)
-
【PHP 正規表現を使って文字列...
-
VBSで"をエスケープする文字は?
-
空白文字のカンマへの変換について
-
VBAのコマンドボタンの文字列の...
-
文字の入力で横バー上段、中断...
-
メッセージボックスで1025文字...
-
ソースコードの1行が長いとき...
-
Excel関数「COUNTIF」で”文字”...
-
エスケープ文字の復帰(¥r)と...
-
C++でのCRLFについて
-
UTF8メールがLotus Notesで文字...
-
全角括弧と全角読点の間隔を狭...
-
グレープシティのSPREAD...
-
【Tex】\\verbatiminputについて
-
文字化け変換方法
-
最終行の改行について
-
数値をASCII文字にする方法につ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSで"をエスケープする文字は?
-
ダブルコーテーション(
-
文字列の置換をCStringで(C++)
-
文字列の括弧について(初心者)
-
nl2brが効かないのですが・・・
-
○分から○時間○分に変換
-
ダブルクォーテーションが置換...
-
PHPの¥
-
php 正規表現で、\\マークを取...
-
c# string型の変数に、ダブルク...
-
不規則なaタグのスクレイピング...
-
【PHP】preg_replace() で正...
-
Smartyで携帯絵文字を表示する方法
-
htmlspecialchars関数でエスケ...
-
独自タグに囲まれた文字列の変換
-
dirnameでパスが正しく取れない...
-
sedでの最短一致の書き方
-
2バイトローマ数字小文字につ...
-
入力文字に\\マークが入ってい...
-
正規表現でお尻から検索
おすすめ情報