Ⅰ 用php寫一個進制轉換的程序。增加如下圖的一個表單,用PHP函數完成。10轉2,10轉8,10轉16進制。
<?php
$frombase ='';
$tobase ='';
if($_POST){
$frombase =$_POST['frombase'];
$type =$_POST['type'];
switch($type){
case1:
$tobase=base_convert($frombase,10,2);break;
case2:
$tobase=base_convert($frombase,10,8);break;
case3:
$tobase=base_convert($frombase,10,16);break;
}
}
?>
<formaction=""method="post">
數:<inputtype="text"name="frombase"value="<?phpecho$frombase;?>"size="20"/>
<selectname="type">
<optionvalue="1">10to2</option>
<optionvalue="2">10to8</option>
<optionvalue="3">10to16</option>
</select>
<inputtype="submit"value="轉換"/>
<inputtype="text"value="<?phpecho$tobase;?>"size="20"/>
</form>
試試看是不是您想要的寫法。
Ⅱ 怎麼用php 里的bin2hex函數算出來的十六進制是「3130」之類的,比如二進制10怎麼算出來就是3130
echo bin2hex("10");
輸出3130,確實是這樣的,因為"10"是兩個字元,其ASCII代碼分別是16進制的31和30。
手冊上的內容如下:
bin2hex — 將二進制數據轉換成十六進製表示
說明
string bin2hex ( string $str )
返回 ASCII 字元串,為參數 str 的十六進製表示。轉換使用位元組方式,高四位位元組優先。
Ⅲ php中數組元素轉為16進制的問題
PHP不會。
我的思路是:將要轉換的元素做位運算,&00001111,得到低位的值,對它進行判斷,如果在0-9范圍內,結果是該值+』0『變成十六進制形式字元,若>=10且<=15,結果是該值-10+『a』或者-10+『A'; 對原數 &11110000,取出高位值,做同樣的判斷,得到高位的十六進制值。
後面連接成字元串的自己應該可以做到。
Ⅳ 2進制轉16 怎麼轉
舉個例子,比如110101轉16進制
1.向2進制數的左邊添0,直到數位可以被4整除:00110101
2.把2進制輸每4個數位分隔開來:
0011
0101
3.把每4個2進制數單獨轉成16進制數即可:
3
5
(2進制和16進制對應表在下面)
4.最後就得到110101(2進制)=35(16進制)
2進制和16進制轉換表
0001
1
0010
2
0011
3
0100
4
0101
5
0110
6
0111
7
1000
8
1001
9
1010
A
1011
B
1100
C
1101
D
1110
E
1111
F
Ⅳ php 如何將 16進制字元串轉為16進制字元數組 或者將 2進制字元串轉為16進制字元數組
echo ord(pack("H*", 'F'));
這個方法可以把hex轉成bin數據直接寫文件什麼的都可以了
我不確定你要的答案是什麼, 不過php中並不存在字元數組這個c的概念
至於bin轉hex, 直接用bin2hex()即可, 不過由於php沒有字元數組, 餘下的如果不是你要的, 再轉其它吧
php中字元本身就可以使用$var[x]的形式直接調用單個字元, 如果樓主想問的不是這些, 歡迎追問
Ⅵ php 16進制轉換遇到奇怪的問題
據我曾經遇到過類似問題的經驗,你需要仔細查看下SQL語句,比如:如果某個變數內容里有單引號或雙引號,那麼,$db->query($sql)就會執行有誤。
用echo "$sql"的辦法查看輸出的SQL語句是個簡單的辦法,但需要注意一點:輸出的內容是在html里,也就是說,會經過瀏覽器的編碼,你看到的並不一定是你輸出的。
Ⅶ php 如何進行二進制和十六進制文件操作
2進制文件流操作
Ⅷ 二進制怎樣轉化為十六進制
二進制和十六進制的互相轉換比較重要。不過這二者的轉換卻不用計算,每個C,C++程序員都能做到看見二進制數,直接就能轉換為十六進制數,反之亦然。 我們也一樣,只要學完這一小節,就能做到。 首先我們來看一個二進制數:1111,它是多少呢? 你可能還要這樣計算:1 * 2^0 + 1 * 2^1 + 1 * 2^2 + 1 * 2^3 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。 然而,由於1111才4位,所以我們必須直接記住它每一位的權值,並且是從高位往低位記,:8、4、2、1。即,最高位的權值為2^3 = 8,然後依次是 2^2 = 4,2^1=2, 2^0 = 1。 記住8421,對於任意一個4位的二進制數,我們都可以很快算出它對應的10進制值。 下面列出四位二進制數 xxxx 所有可能的值(中間略過部分) 僅4位的2進制數 快速計算方法 十進制值 十六進值 1111 = 8 + 4 + 2 + 1 = 15 F 1110 = 8 + 4 + 2 + 0 = 14 E 1101 = 8 + 4 + 0 + 1 = 13 D 1100 = 8 + 4 + 0 + 0 = 12 C 1011 = 8 + 0 + 2+ 1 = 11 B 1010 = 8 + 0 + 2 + 0 = 10 A 1001 = 8 + 0 + 0 + 1 = 9 9 .... 0001 = 0 + 0 + 0 + 1 = 1 1 0000 = 0 + 0 + 0 + 0 = 0 0 二進制數要轉換為十六進制,就是以4位一段,分別轉換為十六進制。 如(上行為二制數,下面為對應的十六進制): 1111 1101 , 1010 0101 , 1001 1011 F D , A 5 , 9 B 反過來,當我們看到 FD時,如何迅速將它轉換為二進制數呢? 先轉換F: 看到F,我們需知道它是15(可能你還不熟悉A~F這五個數),然後15如何用8421湊呢?應該是8 + 4 + 2 + 1,所以四位全為1 :1111。 接著轉換 D: 看到D,知道它是13,13如何用8421湊呢?應該是:8 + 4 + 1,即:1101。 所以,FD轉換為二進制數,為: 1111 1101 由於十六進制轉換成二進制相當直接,所以,我們需要將一個十進制數轉換成2進制數時,也可以先轉換成16進制,然後再轉換成2進制。 比如,十進制數 1234轉換成二制數,如果要一直除以2,直接得到2進制數,需要計算較多次數。所以我們可以先除以16,得到16進制數: 被除數 計算過程 商 余數 1234 1234/16 77 2 77 77/16 4 13 (D) 4 4/16 0 4 結果16進制為: 0x4D2 然後我們可直接寫出0x4D2的二進制形式: 0100 1101 0010。 其中對映關系為: 0100 -- 4 1101 -- D 0010 -- 2 同樣,如果一個二進制數很長,我們需要將它轉換成10進制數時,除了前面學過的方法是,我們還可以先將這個二進制轉換成16進制,然後再轉換為10進制。 下面舉例一個int類型的二進制數: 01101101 11100101 10101111 00011011 我們按四位一組轉換為16進制: 6D E5 AF 1B
Ⅸ php 怎麼讀取一個文件,保存為16進制的數字。
把文件裡面的每一個位元組的ascii碼轉成16進制就可以了,如下:
$content=file_get_contents("myfile");
$hex="";
for($i=0;$i<=strlen($content);$i++){
$asc=ord(substr($content,$i,1));
$hex.=dechex($asc);
}
file_put_contents("mynewfile",$hex);
Ⅹ 請教由二進制轉換成十六進制的方法
二進制和十六進制的互相轉換比較重要。不過這二者的轉換卻不用計算,每個C,C++程序員都能做到看見二進制數,直接就能轉換為十六進制數,反之亦然。
我們也一樣,只要學完這一小節,就能做到。
首先我們來看一個二進制數:1111,它是多少呢?
你可能還要這樣計算:1 * 20 + 1 * 21 + 1 * 22 + 1 * 23 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。
然而,由於1111才4位,所以我們必須直接記住它每一位的權值,並且是從高位往低位記,:8、4、2、1。即,最高位的權值為23 = 8,然後依次是 22 = 4,21=2, 20 = 1。
記住8421,對於任意一個4位的二進制數,我們都可以很快算出它對應的10進制值。
下面列出四位二進制數 xxxx 所有可能的值(中間略過部分)
僅4位的2進制數 快速計算方法 十進制值 十六進值
1111 = 8 + 4 + 2 + 1 = 15 F
1110 = 8 + 4 + 2 + 0 = 14 E
1101 = 8 + 4 + 0 + 1 = 13 D
1100 = 8 + 4 + 0 + 0 = 12 C
1011 = 8 + 4 + 0 + 1 = 11 B
1010 = 8 + 0 + 2 + 0 = 10 A
1001 = 8 + 0 + 0 + 1 = 10 9
....
0001 = 0 + 0 + 0 + 1 = 1 1
0000 = 0 + 0 + 0 + 0 = 0 0
二進制數要轉換為十六進制,就是以4位一段,分別轉換為十六進制。
如(上行為二制數,下面為對應的十六進制):
1111 1101 , 1010 0101 , 1001 1011
F D , A 5 , 9 B
反過來,當我們看到 FD時,如何迅速將它轉換為二進制數呢?
先轉換F:
看到F,我們需知道它是15(可能你還不熟悉A~F這五個數),然後15如何用8421湊呢?應該是8 + 4 + 2 + 1,所以四位全為1 :1111。
接著轉換 D:
看到D,知道它是13,13如何用8421湊呢?應該是:8 + 2 + 1,即:1011。
所以,FD轉換為二進制數,為: 1111 1011
由於十六進制轉換成二進制相當直接,所以,我們需要將一個十進制數轉換成2進制數時,也可以先轉換成16進制,然後再轉換成2進制。