怎样在PHP中把16进制HEX数据转换为2进制数据呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样在PHP中把16进制HEX数据转换为2进制数据呢?相关的知识,希望对你有一定的参考价值。

十六进制转为二进制有两种理解方法,第一是十六进制字符串转二进制字符串,第二是十六进制数转二进制数,下面分别介绍2种转换方法:

1.hex2bin函数可以将十六进制字符串转换为二进制字符串,详细用法如下:

hex2bin — 转换十六进制字符串为二进制字符串

string hex2bin(string $data)

转换十六进制字符串为二进制字符串。

参数:

data:十六进制表示的数据

返回值:

返回给定数据的二进制表示  或者在失败时返回 FALSE。 

异常:

如果输入的十六进制字符串是奇数长数或者无效的十六进制字符串将会抛出E_WARNING 级别的错误。 

示例:

$hex = hex2bin("6578616d706c65206865782064617461");
echo $hex;//example hex data(其中16进制代表的是ascii码)

2.base_convert是真正意义上的进制转换函数

base_convert — 在任意进制之间转换数字

string base_convert( string $number, int $frombase, int $tobase)

返回一字符串,包含 number以 tobase 进制的表示。number 本身的进制由frombase指定。frombase 和 tobase 都只能在2 和 36 之间(包括 2 和 36)。高于十进制的数字用字母 a-z 表示,例如a 表示 10,b 表示 11 以及 z 表示 35。 

参数:

number:要转换的数字

frombase:原始进制

tobase:转换后的进制

示例:

$hexadecimal = \'A37334\';
echo base_convert($hexadecimal, 16, 2);//101000110111001100110100
参考技术A (php >= 5.4.0)
hex2bin — 转换十六进制字符串为二进制字符串追问

5.3以下的呢?

追答

base_convert — 在任意进制之间转换数字

追问

这个不行,这个只能转换数字的。

要在php5.3下实现hex2bin()函数的功能

我要把16进制HEX数据转换为2进制数据,而不是把16进制的数字转换为2进制的数字!

本回答被提问者和网友采纳

数据类型

#1.整型
number = int(input(‘请输入一个整数:‘))
print("十进制为:",number)
# bin() 将十进制整数转换为二进制字符串
print(‘二进制为:‘,bin(number))
# oct() 将十进制整数转换为八进制字符串
print(‘八进制为:‘,oct(number))
# hex() 将十进制整数转换为十六进制字符串
print(‘十六进制为:‘,hex(number))
# int()接受一个符合整型规范的字符串,并将该字符串转换为整型
string_24 = ‘24‘
print(type(string_24))
print(‘字符串转换为整型‘,type(int(string_24)))

#2.浮点型
#双精度,可输出17位数,但计算机只能保证15个数字的精度,超过了之后会被截断。
#decimal提供了一个更精准的数字类型
#使用getcontext().prec自定义浮点数精度的位数
import decimal
float_a = decimal.Decimal(‘3.1234567891011‘)
float_b = decimal.Decimal(‘3.13215162312323333‘)
decimal.getcontext().prec = 30 #设置浮点数的精度为30位
print(float_a*float_b)

#3.复数类型
#3+2j、3.1+4.9j的数据被称为数据
#复数由"实部"和"虚部"两部分组成
#"实部"是一个实数,"虚部"是一个实数与j或J的组合
‘‘‘
特点:
(1)虚部不能单独存在,它总是和一个值为0.0的实数部分构成一个复数
(2)实数部分和虚数部分都是浮点型
(3)虚数部分后面必须有j或J
‘‘‘
complex_a = 3+2j
print(complex_a)
#使用内置函数complex(real<实数>,imag<虚数>)定义复数
complex_b = complex(3,5)
print(complex_b)
print(complex(5))
#分别获取复数的"实部"和"虚部"
print(complex_a.real)
print(complex_a.imag)
#共轭复数:两个实部相等、虚部互为相反的复数
#复数可以通过conjugate()方法返回它的共轭复数
complex_a.conjugate()

#4.布尔类型
#使用bool()函数查看
‘‘‘
以下数据的布尔值都是Flase:
(1)None:
bool(None)
(2)Flase
(3)任何为0的数字类型:
bool(0)
bool(0.0)
bool(0j)
(4)任何空序列:
bool(())
bool({})
bool([])
(5)空字典:
bool({})
(6)用户定义的类实例返回0或者Flase
‘‘‘
bool(None)
bool(0)
bool(0.0)
bool(0j)
bool(())
bool({})
bool([])
bool({})

#5.算术运算符
‘‘‘
+
-
*
/ 使两个操作数相除,获取操作数的商
// 使两个操作数相除,获取商的整数部分
% 取余
** 幂:使两个操作数进行幂运算,获取a的b次幂
‘‘‘
#混合运算时,Python会进行强制的临时类型转换
‘‘‘
Python强制临时类型转换原则:
(1)布尔类型进行算术运算时,将其视为数值0和1
(2)整型与浮点型进行混合运算时,将整型转化为浮点型
(3)其他类型与复数运算时,将其他类型转换为复数型
‘‘‘
print(10+True)
print(10/2.0)
print(10-(3+5j))
#除法操作符可能会改变操作数的类型
a = 10/2
print(a)
type(a)

#6.赋值运算符
‘‘‘
=
+=
-=
*=
/=
//=
%=
**=
‘‘‘

#7.比较运算符
‘‘‘
==
!=
>
<
>=
<=
‘‘‘

#8.逻辑运算符
‘‘‘
or 或
and 与
nod 非
‘‘‘

#9.成员运算符
‘‘‘
用于测试给定值是否在序列(列表、字符串等)中
成员运算符有in和not in
(1)in:如果指定元素在序列中,返回True,否则返回Flase
(2)not in:如果指定元素不在序列中,返回True,否则返回Flase
‘‘‘

#10.身份运算符
#PYthon的一切数据都可用视为对象
#身份就是内存地址,它是每一个对象的唯一标识
#对象被创建以后身份不会再发生任何变化
#is和is not用于判断两个对象的内存地址是否相同
‘‘‘
(1)is:测试两个对象的内存地址是否相同,相同返回True,否则返回Flase
(2)not is:测试两个对象的内存地址是否不同,不同返回True,否则返回Flase
‘‘‘
id_a = 10
id_b = id_a
print(id_a is id_b)
#通过id()函数查看内存地址
id(id_a)
id(id_b)

#11.数字类型转换
‘‘‘
int() 转换为整型
float() 换为浮点型
complex() 转换为复数类型
bool() 转换为布尔类型
‘‘‘

以上是关于怎样在PHP中把16进制HEX数据转换为2进制数据呢?的主要内容,如果未能解决你的问题,请参考以下文章

php 怎么将utf-8格式的汉字转换成16进制?

excel里将16进制转换为IP地址

PHP base_convert() 函数

数据转换-16进制字符

Qt如何将串口接收到十六进制转换为十进制,用这个函数不行int hex = str.toInt(&ok, 16);

java 实现hex文件转换bin保存至内存中