一:ASCII字符轉化爲十六進制數php
在php中將ASCII字符轉化爲十六進制數使用到bin2hex函數函數
語法以下:code
bin2hex(string)
參數string爲須要轉化的ASCII字符orm
實例以下:ci
$str = 'I love中國'; $str = bin2hex($str); echo $str;
輸出結果以下:字符串
49206c6f7665e4b8ade59bbd
這樣就是先了將ASCII字符轉化爲十六進制數input
二:十六進制數轉化爲ASCII字符string
在php中將十六進制數轉化爲ASCII字符使用到hex2bin函數,在php5中沒有bex2bin函數,這時候咱們能夠使用pack函數來將十六進制數轉化爲ASCII字符it
bex2bin函數語法以下:form
hex2bin(string)
參數string爲須要轉化的十六進制數
pack函數語法以下:
pack(format,args+)
參數說明:
format:必填,爲規定在包裝數據時所使用的格式,參數可選值以下:
a - NUL 填充的字符串 A - SPACE 填充的字符串 h - 十六進制字符串,低位在前 H - 十六進制字符串,高位在前 c - signed char C - unsigned char s - signed short(老是16位, machine 字節順序) S - unsigned short(老是16位, machine 字節順序) n - unsigned short(老是16位, big endian 字節順序) v - unsigned short(老是16位, little endian 字節順序) i - signed integer(取決於machine的大小和字節順序) I - unsigned integer(取決於machine的大小和字節順序) l - signed long(老是32位, machine 字節順序) L - unsigned long(老是32位, machine 字節順序) N - unsigned long(老是32位, big endian 字節順序) V - unsigned long(老是32位, little endian 字節順序) f - float(取決於 machine 的大小和表示) d - double(取決於 machine 的大小和表示) x - NUL 字節 X - 備份一個字節 Z - NUL 填充的字符串 @ - NUL 填充絕對位置
args+:非必填,爲規定被包裝的一個或多個參數
bex2bin函數將:十六進制數轉化爲ASCII字符實例以下
$str = '49206c6f7665e4b8ade59bbd'; $str = hex2bin($str); echo $str;
輸出結果以下:
I love中國
可是執行hex2bin函數時可能會報以下錯誤:
hex2bin(): Hexadecimal input string must have an even length
出現如上錯誤的緣由可能有兩種:
1:咱們的十六進制數中可能有不是十六進制的字符
2:十六進制數的字符長度爲奇數
因此咱們能夠這樣寫:
$str = '49206c6f7665e4b8ade59bbd'; $str = @hex2bin($str); if ($str) { echo $str; } else { echo 0; }
pack函數實現將十六進制數轉化爲ASCII字符實例以下:
$str = '49206c6f7665e4b8ade59bbd'; $str = pack("H*", $str); echo $str;
如上這樣就是先了將十六進制數轉化爲ASCII字符