Yahoo 知識+ 將於 2021 年 5 月 4 日 (美國東岸時間) 停止服務,而 Yahoo 知識+ 網站現已轉為僅限瀏覽模式。其他 Yahoo 資產或服務,或你的 Yahoo 帳戶將不會有任何變更。你可以在此服務中心網頁進一步了解 Yahoo 知識+ 停止服務的事宜,以及了解如何下載你的資料。

?
Lv 7
? 發問於 電腦與網際網路程式設計 · 10 年前

請問怎麼判斷輸入的是不是16進位數字

$num=$_POST['num'];

取得 $num 後

如果 $num 是 16 進位數字就格式化成 6 位數

例如:

123456

098765

0000FF

FFFFFF

超過 6 位數截頭或去尾都可以

如果 $num 不是 16 進位數字

例如:文字

就把 $num 變成 000000

更新:

只要符合

0123456789abcdefABCDEF

都可以

不用管它實際上是十進位或十六進位

更新 2:

如果 $num 只有 1 個字元

寫一個判斷式

當 $num 是 0123456789abcdefABCDEF 其中一個字元

則 $num 不變

否則 $num = 0

更新 3:

解決了

請 Chris 大移駕到回答區

以後有 PHP 問題還希望能跟您討論

1 個解答

評分
  • 10 年前
    最愛解答

    $a = 1234; // decimal number

    $a = -123; // a negative number

    $a = 0123; // octal number (equivalent to 83 decimal)

    $a = 0x1A; // hexadecimal number (equivalent to 26 decimal)

    除非使用者輸入 0x這種模式才會是十六進位

    若輸入 11 可以是十進位 也可以是十六進位裡的17

    必須以0x做判斷 否則十進位 十六進位都使用數字模式 是看不出來的

    2011-12-10 21:35:13 補充:

    假設123是$num=$_POST['num'];

    $hex=dechex("123");

    echo str_pad($hex,6,'0',STR_PAD_LEFT);

    2011-12-11 20:18:24 補充:

    有解決了嗎......

    2011-12-11 21:43:46 補充:

    假設123是$num=$_POST['num'];

    $hex=dechex("123");

    echo str_pad($hex,6,'0',STR_PAD_LEFT);

還有問題嗎?立即提問即可得到解答。