php把十六進(jìn)制轉(zhuǎn)化為ascii碼的方法:1、通過bex2bin函數(shù)將十六進(jìn)制數(shù)轉(zhuǎn)化為ASCII字符;2、通過pack函數(shù)將十六進(jìn)制數(shù)轉(zhuǎn)化為ASCII字符。
本文操作環(huán)境:windows7系統(tǒng)、PHP7.1版,DELL G3電腦
php怎么把十六進(jìn)制轉(zhuǎn)化為ascii碼?
十六進(jìn)制數(shù)轉(zhuǎn)化為ASCII字符
在php中將十六進(jìn)制數(shù)轉(zhuǎn)化為ASCII字符使用到hex2bin函數(shù),在php5中沒有bex2bin函數(shù),這時候我們可以使用pack函數(shù)來將十六進(jìn)制數(shù)轉(zhuǎn)化為ASCII字符
bex2bin函數(shù)語法如下:
hex2bin(string)
參數(shù)string為需要轉(zhuǎn)化的十六進(jìn)制數(shù)
pack函數(shù)語法如下:
pack(format,args+)
參數(shù)說明:
format:必填,為規(guī)定在包裝數(shù)據(jù)時所使用的格式,參數(shù)可選值如下:
a - NUL 填充的字符串 A - SPACE 填充的字符串 h - 十六進(jìn)制字符串,低位在前 H - 十六進(jìn)制字符串,高位在前 c - signed char C - unsigned char s - signed short(總是16位, machine 字節(jié)順序) S - unsigned short(總是16位, machine 字節(jié)順序) n - unsigned short(總是16位, big endian 字節(jié)順序) v - unsigned short(總是16位, little endian 字節(jié)順序) i - signed integer(取決于machine的大小和字節(jié)順序) I - unsigned integer(取決于machine的大小和字節(jié)順序) l - signed long(總是32位, machine 字節(jié)順序) L - unsigned long(總是32位, machine 字節(jié)順序) N - unsigned long(總是32位, big endian 字節(jié)順序) V - unsigned long(總是32位, little endian 字節(jié)順序) f - float(取決于 machine 的大小和表示) d - double(取決于 machine 的大小和表示) x - NUL 字節(jié) X - 備份一個字節(jié) Z - NUL 填充的字符串 @ - NUL 填充絕對位置
args+:非必填,為規(guī)定被包裝的一個或多個參數(shù)
bex2bin函數(shù)將:十六進(jìn)制數(shù)轉(zhuǎn)化為ASCII字符實(shí)例如下
$str = '49206c6f7665e4b8ade59bbd'; $str = hex2bin($str); echo $str;
輸出結(jié)果如下:
I love中國
但是執(zhí)行hex2bin函數(shù)時可能會報如下錯誤:
hex2bin(): Hexadecimal input string must have an even length
出現(xiàn)如上錯誤的原因可能有兩種:
1:我們的十六進(jìn)制數(shù)中可能有不是十六進(jìn)制的字符
2:十六進(jìn)制數(shù)的字符長度為奇數(shù)
所以我們可以這樣寫:
$str = '49206c6f7665e4b8ade59bbd'; $str = @hex2bin($str); if ($str) { echo $str; } else { echo 0; }
pack函數(shù)實(shí)現(xiàn)將十六進(jìn)制數(shù)轉(zhuǎn)化為ASCII字符實(shí)例如下:
$str = '49206c6f7665e4b8ade59bbd'; $str = pack("H*", $str); echo $str;
如上這樣就是先了將十六進(jìn)制數(shù)轉(zhuǎn)化為ASCII字符
推薦學(xué)習(xí):《PHP視頻教程》