アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHPを勉強中です。

進数のマニュアルページを見ていてわからないことがあったので教えていただけませんか?

例として、
$a = 0123; // 8進数 (10進数の83と等価)
とありました。

ローカル環境で試したところ、確かに変数$aは10進数で83と表示されたのですが、10進数として0123を表したい時にはどうしたらよいのでしょうか?

intval(value, base)で置換するにも一度文字列として扱わなくてはならないようですが、10進数の数字として扱う方法は別にないのでしょうか?

8進数表記は0から始まるということですが、例えば「0123」の値を「123」として扱いたい!という時などが今後あるかもしれませんので、上記内容についてアドバイスいただけないでしょうか?

お願いしますm==m

A 回答 (3件)

>10進数の数字として扱う方法は別にないのでしょうか?



ない

>例えば「0123」の値を「123」として扱いたい!という時などが今後あるかもしれません

そんな可能性はない

今回の命題は定義の問題なので、たとえば「+」という記号で減算したいのですが
どうしたらいいの?レベルの質問です。

どうしてもというなら質問の中身にあるとおり文字列として処理するしかありません。

<?PHP
$a = (int) "0123";
print $a;
?>
    • good
    • 0
この回答へのお礼

ズバッと回答いただきまして、有難うございます。

>今回の命題は定義の問題なので

考えがずれていましたね。勉強になりました。
有難うございました。

お礼日時:2012/11/26 18:27

>10進数として0123を表したい時にはどうしたらよいのでしょうか?



ちょっと意図がわかりません。

$str = '0123'; であれば、intval($str) ですし、最初から10進と決まっているなら素直に

$val = 123;

と書けばいいだけです。

それとも

$val = 0123;

とした8進数(=83)を10進の123にしたいとうことですか?


>例えば「0123」の値を「123」として扱いたい!という時などが今後あるかもしれませんので、

0123は8進表記というだけなので値として「0123」というわけではないので、意味がないと思うのですが(実際にはintegerで格納されているだけだし)。
    • good
    • 0
この回答へのお礼

>ちょっと意図がわかりません。

例えば、ユーザーに数字の入力を求めた場合、入力された値が「0123」だったとし、これを「123」として扱うにはどうするんだ?と思い質問しました。

そういえばGETやPOSTの値って全て文字列として扱っていましたね・・・。

>0123は8進表記というだけなので値として「0123」というわけではないので、意味がないと思うのですが

勉強になりました。
有難うございます。

お礼日時:2012/11/26 18:25

何進数でもメモリーには2進数で入っています。



それを8で割った余りが、1桁目です。割った商をさらに8で割ればその余りが2桁目。それを繰り返せばいいですね。
    • good
    • 0
この回答へのお礼

8進数の仕組みについてありがとうございました。
勉強になりました。

お礼日時:2012/11/26 18:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!