PHP中查看字节数组内容有五种方法:一、foreach循环格式化输出十六进制;二、bin2hex转字符串后分块;三、unpack解析并带索引十进制显示;四、hexdump风格三栏分块输出;五、error_log记录xHH转义序列。

如果在PHP中需要查看字节数组的实际内容,例如调试二进制数据、网络协议响应或加密输出,直接使用print_r或var_dump可能无法清晰呈现原始字节值。以下是几种准确输出字节数组内容的方法:
一、使用foreach循环逐字节格式化输出
该方法适用于任意长度的字节数组,将每个字节以十进制或十六进制形式显式打印,便于人工核对原始值。
1、定义字节数组,例如:$bytes = [0x48, 0x65, 0x6C, 0x6C, 0x6F];
2、使用foreach遍历数组,对每个字节调用sprintf('%02X', $byte)转为大写两位十六进制字符串
立即学习“PHP免费学习笔记(深入)”;
3、用echo或printf逐个输出,字节间以空格分隔
4、可在每行限制字节数(如16字节/行)提升可读性,通过$i % 16 === 0判断换行
二、使用bin2hex函数转换为十六进制字符串
该方法将整个字节数组一次性转为连续十六进制字符串,适合快速验证数据完整性或与协议文档比对。
1、确保输入为字符串类型字节数组,若为整数数组需先用pack('C*', ...$bytes)转换
2、调用bin2hex($binary_string)获取全小写十六进制字符串
3、使用strtoupper()统一转为大写格式(可选)
4、使用chunk_split()按每两个字符插入空格,例如:chunk_split($hex, 2, ' ')
三、使用unpack函数解析并格式化输出
该方法适用于已知字节数组结构的场景,能按指定格式(如无符号字节C*)批量解包,并支持索引标注。
1、将字节数组转换为二进制字符串:若原为整数数组,使用pack('C*', ...$bytes)
2、调用unpack('C*byte', $binary_string)生成键为byte1、byte2等的关联数组
Content at Scale SEO长内容自动化创作平台
154 查看详情
3、遍历解包结果,对每个值使用sprintf('%03d', $val)补零至三位十进制显示
4、拼接输出时加入下标标识,例如"[0]: 72 [1]: 101"
四、使用hexdump风格分块输出
该方法模拟Linux hexdump -C输出格式,包含地址偏移、十六进制区、ASCII区三栏,适合分析较长字节数组。
1、计算总长度,按16字节每行划分区块
2、对每行起始地址使用sprintf('%08X', $offset)生成8位十六进制偏移量
3、提取当前行字节子串,用str_split($line, 1)拆分为单字节数组
4、对每个字节分别生成十六进制码(sprintf('%02X', ord($c)))和可打印ASCII字符(ctype_print($c) ? $c : '.')
5、三部分用固定宽度空格对齐,确保列对齐
五、使用error_log配合十六进制转义输出
该方法适用于后台调试场景,避免HTML渲染干扰,将字节数组以xHH转义序列形式记录到错误日志。
1、遍历字节数组,对每个字节生成'\x' . sprintf('%02X', $byte)格式字符串
2、使用implode('', $escaped)连接所有转义单元
3、调用error_log("Bytes: " . $escaped_string)写入PHP错误日志文件
4、关键提示:此方式不输出到页面,仅用于日志追踪,需确保log_errors开启且error_log路径可写
以上就是php怎么打印字节数组_PHP输出打印字节数组内容的详细内容,更多请关注php中文网其它相关文章!

