問題
你想解析乙個包含著二進位制編碼值的字串,或者想把值編碼為字串。例如,你想以二進位制表示法儲存數值,而不是以ascii字元的序列形式。
方案使用pack()函式把二進位制資料儲存到乙個字串中:
<?php
$packed=pack('s4',1974,106,28225,32725);
//使用unpack()函式從乙個字串中抽取二進位制資料
$nums=unpack('s4',$packed);
print_r($nums);
// 輸出乙個陣列 array( [1] => 1974 [2] => 106 [3] => 28225 [4] => 32725)
?>
討論
傳遞給pack()引數的第乙個引數是乙個格式化字串,用於描述 如何對其他引數進行編碼。其中格式化字串s4表示:
由輸入的資料生成四位無符號的短16位數。對於給定的1974,106,28225和32725作為基於little-endian序列的計算機輸入資料,
會生成8組數字:182,7,106,0,65,110,213,127。
其中每2個數字對應著乙個輸入的資料值,即7*256+182=1974;0*256+106=106;110*256+65=28225;127*256+213=32725.
傳遞給unpack()函式的第乙個引數,也是乙個格式化字串;第二個引數則是要解碼的資料。
在unpack()函式內部,格式化字串以及其數目的後面還可以跟乙個字串,這個新增的字串將作為陣列的乙個鍵。例如:
<?php
$packed=pack('s4',1974,106,28225,32725);
$nums=unpack('s4num',$packed);
print_r($nums);
//輸出array ( [num1] => 1974 [num2] => 106 [num3] => 28225 [num4] => 32725 )
?>
以下是用於pack()和unpack函式的格式化字串
a 無填充的字串
a 空格填充的字串
h 16位字串,以低四位開始
h 16位字串,以高四位開始
c 帶符號的字元
c 不帶符號的字元
s 帶符號的短整型數(always 16 bit, machine byte order)
s 無符號的短整型數 (always 16 bit, machine byte order)
n 無符號的短整型數 (always 16 bit, big endian byte order)
v 無符號的短整型數 (always 16 bit, little endian byte order)
i 帶符號的整數 (machine dependent size and byte order)
i 無符號的整數 (machine dependent size and byte order)
l 帶符號的長整型數 (always 32 bit, machine byte order)
l 無符號的長整型數 (always 32 bit, machine byte order)
n 無符號的長整型數 (always 32 bit, big endian byte order)
v 無符號的長整型數 (always 32 bit, little endian byte order)
q 帶符號的超長整型數 (always 64 bit, machine byte order)
q 無符號的超長整型數 (always 64 bit, machine byte order)
j 無符號的超長整型數 (always 64 bit, big endian byte order)
p 無符號的超長整型數 (always 64 bit, little endian byte order)
f 浮點型數 (大小和表示法與計算機相關)
d 雙精度型數 (大小和表示法與計算機相關)
x 空位元組
x 倒退乙個位元組
z nul-padded string (new in php 5.5)
@ 絕對位置以空值填充
計算二進位制字串
4646598ce4f12f0f484da18acbd83813.png en resource database 11364 1 1226f6e4e21ed6df41356aa6e9e857c0.png en resource database 11366 1 遇到難度較大的題目的解題步驟 1.找...
計算二進位制字串
題目描述 給定乙個字串 s,計算具有相同數量0和1的非空 連續 子字串的數量,並且這些子字串中的所有0和所有1都是組合在一起的。重複出現的子串要計算它們出現的次數。示例 1 輸入 00110011 輸出 6 解釋 有6個子串具有相同數量的連續1和0 0011 01 1100 10 0011 和 01...
字串與二進位制
單引號字串會被表示成整數值列表。c返回字元 c 的整數編碼。下面這個例子用於解析字元列表表示法,該表示法用於表示乙個任意的有符號的十進位制資料。defmodule parse do def number tail do number digits tail,0 1 enddef number tai...