Ⅰ 用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进制。