
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ランキング
-
php 正規表現で、\\マークを取...
-
(から)までの文字列を削除したい
-
PHPで「,」を「, 」へ置換した...
-
ダブルコーテーション(
-
VBAのコマンドボタンの文字列の...
-
エスケープ文字の復帰(¥r)と...
-
メッセージボックスで1025文字...
-
ソースコードの1行が長いとき...
-
文字の入力で横バー上段、中断...
-
VBAでCSVをExcelに取り込む時に...
-
aspで作成するcsvファイルで、e...
-
vb.netでのリッチテキストボッ...
-
Phonetic関数を利用して文章中...
-
カンマの含まれる文字列の数値...
-
エクセルのCOUNTIFが正しくカウ...
-
COBOLの改行
-
文字化け変換方法
-
、"(ダブルクォーテーション)...
-
最終行の改行について
-
Excel VBAからBeckyを起動して...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ダブルコーテーション(
-
文字列の置換をCStringで(C++)
-
文字列の括弧について(初心者)
-
c# string型の変数に、ダブルク...
-
VBSで"をエスケープする文字は?
-
○分から○時間○分に変換
-
入力文字に\\マークが入ってい...
-
mcryptで英数字(12未満)のみに...
-
マクロ関数 #define の効果は何...
-
正規表現
-
VB.NET 文字コード
-
PHPでCSVを出力する際のセルに...
-
PHPでjavascriptを書き出すとき...
-
ヒットする初回のみ置換する方法
-
文字列のアスタリスク置換
-
php 正規表現で、\\マークを取...
-
正規表現について
-
PHP VS Java (パフォーマン...
-
sedでの最短一致の書き方
-
正規表現での記述方法
おすすめ情報