有一个问题请教
我做了一个CRC校验,输入必须是"\xAA\xBB\x10\x03\x00\x00\x00\x00\x0F\x00\x00\x00\x00\x00"
如何把字符串"AABB1003000000000F0000000000"转换成上面的格式?
我做了一个CRC校验,输入必须是"\xAA\xBB\x10\x03\x00\x00\x00\x00\x0F\x00\x00\x00\x00\x00"
如何把字符串"AABB1003000000000F0000000000"转换成上面的格式?
$string = 'AABB1003000000000F0000000000';
$start = 0;
$strlen = strlen($string);
$len = 2;
while ($strlen) {
$array[] = substr($string,$start,$len);
$string = substr($string, $len, $strlen);
$strlen = strlen($string);
}
$pre = "\x";
$data = '';
foreach( $array AS $val ){
$data .= $pre.$val;
}
var_dump($data);
}
$a = '\x' . join('\x', str_split($s, 2)); //'\xAA\xBB\x10\x03\x00\x00\x00\x00\x0F\x00\x00\x00\x00\x00'
但是,这只与 "\xAA\xBB\x10\x03\x00\x00\x00\x00\x0F\x00\x00\x00\x00\x00" 形式上是相同的,值并不同
在 代码中书写的 "\xAA\xBB\x10\x03\x00\x00\x00\x00\x0F\x00\x00\x00\x00\x00" 将被转换成二进制串,书面上的只是他的值
你可能需要的是 $b = pack('H*', $s);
$s = 'AABB1003000000000F0000000000';
echo '\x'.join('\x',str_split($s,2));
//\xAA\xBB\x10\x03\x00\x00\x00\x00\x0F\x00\x00\x00\x00\x00