PHP で 3進数を81進数へ変換

ホーム >> PHP で 3進数を81進数へ変換
cookie について
正答チェックを cookie に、記録していきたいと思い、PHPでプログラミングしていったとき、あることに気づきました。50個までしかcookieが記録できず、 古いものから消えていってしまうのです。正答チェック1つにつき1cookie を使っていたのであたりまえといえば当たり前ですが…
調べてみると
ドメインあたりのcookie数
Google Chrome 180
Mozilla Firefox 150
Internet Explorer 50
ひとつのドメインあたり使えるcookieの数に限りがあるのです。 でも、cookie ひとつに、4096バイト の情報を入れられることを知り、無制限に cookie を 使うのをやめ、 ひとつのcookieに情報を入れていくようにしていきました。
必要な情報は、未解答印として0を、正解した印として1を、不正解の印として2を、順番に0~2の数字を並べれば、 結果が保存できているというわけです。 しかし、4096バイト ということは、約4000個分しか保存できません。
3進数 と 81進数
世の中には2進数は沢山あります。 コンピュータそのものが0と1からできているからです。 ほしい情報は、0 か 1 か 2 の三つのパターン。 1バイトは、1文字で表現できる文字ですので、0 か 1 か 2 のためだけに1バイト使うのはもったいないです。 そこで、
3進数 10進数
[00] 0
[01] 1
[02] 2
[10] 3
[11] 4
[12] 5
[20] 6
[21] 7
[22] 8
3進数の 一桁目を情報1、二桁目を情報2、というような決めごとを自分でつくっておけば、1バイト で 2つの情報を得られるわけです。 例えば、10進数で 2 なら、3進数で 一桁目が0、二桁目が2 、つまり、情報1が未解答で、情報2が不正解 ということになるわけです。
1桁の数字でみごとに情報1~2が表現できました。
情報1、情報2、情報3 はどうでしょうか?
アルファベットも使えば、一文字(1バイト)で、表現できます。 0~9 又は、a~q のいずれか一文字を使えば三つの情報を一文字(1バイト)で表現でき、 3進数の[222]は、q という一文字に。

さらに、情報1、情報2、情報3、情報4 はどうでしょうか?
a と A は異なる文字ですので、大文字も使えば?と思いますが、アルファベット大文字小文字あわせて52文字、0~9の数字を合わせて62文字。 少し足りません。そこで1バイトの記号も使います。
3進数 81進数
[0000] 0
[0001] 1
[0002] 2
[0010] 3
[0011] 4
[0012] 5
[0020] 6
[0021] 7
[0022] 8
[0100] 9
3進数 81進数
[0101] a
[0102] b
[0110] c
[0111] d
[0112] e
[0120] f
[0121] g
[0122] h
[0200] i
[0201] j
[0202] k
[0210] l
[0211] m
[0212] n
[0220] o
[0221] p
[0222] q
[1000] r
[1001] s
[1002] t
[1010] u
[1011] v
[1012] w
[1020] x
[1021] y
[1022] z
3進数 81進数
[1100] A
[1101] B
[1102] C
[1110] D
[1111] E
[1112] F
[1120] G
[1121] H
[1122] I
[1200] J
[1201] K
[1202] L
[1210] M
[1211] N
[1212] O
[1220] P
[1221] Q
[1222] R
[2000] S
[2001] T
[2002] U
[2010] V
[2011] W
[2012] X
[2020] Y
[2021] Z
3進数 81進数
[2022] !
[2100] #
[2101] $
[2102] %
[2110] &
[2111] ?
[2112] (
[2120] )
[2121] =
[2122] ~
[2200] *
[2201] -
[2202] ^
[2210] @
[2211] [
[2212] ]
[2220] {
[2221] }
[2222] +
上の表を基すれば、3進数を81進数、81進数を3進数に変換できるようになります。 cookie に入れることを前提にしていますので、演算とかはできませんが、テストしてみてください。
3進数をテスト
3進数を入力
3進数送信結果
81進数変換
81進数をテスト
81進数を入力
81進数送信結果
3進数変換
PHP でのプログラミング
function01.php


test.php