首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用H*或bin2hex()解压缩前导零

用H*或bin2hex()解压缩前导零
EN

Stack Overflow用户
提问于 2015-01-27 08:51:21
回答 1查看 1.6K关注 0票数 0

我有一些前导为零字节的二进制数据,但当我解压缩这些数据并将其作为十六进制字符串转储时,我似乎丢失了这些字节。我做错了什么?

更多细节.

我正在php中集成GPS设备数据。

进入设备的数据是二进制格式的,我正在使用

代码语言:javascript
复制
$arr = unpack("H*", $input);

我得到的数据是

代码语言:javascript
复制
01aa08080000014b27163dfc00328e2c950d3edc0a00c2010b0f000e00080301010200f00103091f4542374318000e01c700000004014e00000000000000000000014b271645cc00328e29110d3edc4e00c301160f001000080301010200f001030920814236e818001001c700000008014e00000000000000000000014b2716518400328e24e10d3edc8700c301040e000800080301010200f00103091f8242371518000801c70000000d014e00000000000000000000014b2716a40400328e21510d3edd5c00c6013a0e000800080301010200f00103091f3d4236bc18000801c700000001014e00000000000000000000014b2717dd5600328e1e060d3edd1300cd01080d0000fa090401000200f000fa000309000e4232e718000001c700000000014e00000000000000000000014b2719b86000328e1e060d3edd1300d001080d000000050301000200f0000209001142328b00000000014b271b8fb400328e1e060d3edd1300d001080d000000050301000200f0000209001142327200000000014b271d69b000328e1e060d3edd1300d001080d000000050301000200f0000209001142325e0000080000a771

or 

2d08010000014b275faaa000328e1e060d3edd1300d001080d000000050301000200f000020900124231e400000100002144

这是一种错误的数据格式,因为前面的零都被去掉了。根据集成文档,数据将从

代码语言:javascript
复制
Four zero bytes (0x00)

4B AVL Data Length in the format 0000xxxx

前两个数据的正确格式应该是

代码语言:javascript
复制
00000000000001aa08080000014b27163dfc00328e2c950d3edc0a00c2010b0f000e00080301010200f00103091f4542374318000e01c700000004014e00000000000000000000014b271645cc00328e29110d3edc4e00c301160f001000080301010200f001030920814236e818001001c700000008014e00000000000000000000014b2716518400328e24e10d3edc8700c301040e000800080301010200f00103091f8242371518000801c70000000d014e00000000000000000000014b2716a40400328e21510d3edd5c00c6013a0e000800080301010200f00103091f3d4236bc18000801c700000001014e00000000000000000000014b2717dd5600328e1e060d3edd1300cd01080d0000fa090401000200f000fa000309000e4232e718000001c700000000014e00000000000000000000014b2719b86000328e1e060d3edd1300d001080d000000050301000200f0000209001142328b00000000014b271b8fb400328e1e060d3edd1300d001080d000000050301000200f0000209001142327200000000014b271d69b000328e1e060d3edd1300d001080d000000050301000200f0000209001142325e0000080000a771

and 

000000000000002d08010000014b275faaa000328e1e060d3edd1300d001080d000000050301000200f000020900124231e400000100002144

请注意带零填充的4B前导零和4B数据长度。

当我用

代码语言:javascript
复制
$arr = bin2hex($value)

这给了我同样的结果。

但我确信数据在二进制文件中,我无法呈现前导零。

请帮帮忙。

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2015-01-27 12:41:24

在检查代码时,注意到我在做二进制数据。

代码语言:javascript
复制
$input = trim($input);

这就造成了问题。

注释代码,解压缩返回所需的确切格式。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28166410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档