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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Excel の判定式で正しく判定されない場合があります。 2 2022/05/31 14:43
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
- Excel(エクセル) EXCEL関数(数式)を教えてください 2 2022/06/08 18:32
- MySQL SQLでカラムを追加し、条件に合致した場合にフラグ(レコード)を付与する方法 2 2022/05/18 23:54
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- その他(プログラミング・Web制作) VB.NETの正規表現について 4 2022/04/12 16:54
- Excel(エクセル) Excel 文字列を結合するときに重複をなくしたい 関数・VBA 2 2022/12/12 10:40
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBSで"をエスケープする文字は?
-
ダブルコーテーション(
-
○分から○時間○分に変換
-
php 正規表現で、\\マークを取...
-
ダブルクォーテーションが置換...
-
文字列のアスタリスク置換
-
文字列の置換をCStringで(C++)
-
c# string型の変数に、ダブルク...
-
(から)までの文字列を削除したい
-
近似した文字列を置換するエク...
-
文字列の括弧について(初心者)
-
エスケープ文字の復帰(¥r)と...
-
ソースコードの1行が長いとき...
-
VBAのコマンドボタンの文字列の...
-
ファイルから読み取った改行文...
-
メッセージボックスで1025文字...
-
jsp 改行コードで改行させて表...
-
全角英数文字が嫌われる理由を...
-
全角括弧と全角読点の間隔を狭...
-
Excel関数「COUNTIF」で”文字”...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSで"をエスケープする文字は?
-
ダブルコーテーション(
-
近似した文字列を置換するエク...
-
文字列の置換をCStringで(C++)
-
PHP・Wordpress preg_replaceを...
-
○分から○時間○分に変換
-
c# string型の変数に、ダブルク...
-
【PHP】preg_replace() で正...
-
(から)までの文字列を削除したい
-
nl2brが効かないのですが・・・
-
文字列の括弧について(初心者)
-
PHPでjavascriptを書き出すとき...
-
空白文字のカンマへの変換について
-
php 正規表現で、\\マークを取...
-
不規則なaタグのスクレイピング...
-
ダブルクォーテーションが置換...
-
マクロ関数 #define の効果は何...
-
文字列のアスタリスク置換
-
htmlspecialchars関数でエスケ...
-
文字列内にある「指定した空タ...
おすすめ情報