Contents

如何用固定4个字节表示报文的长度

Contents

前言

最近在与LED屏幕交互时,其规定的报文协议中,前固定32字节为报文头部。这32字节中有四个字节是用来表示报文的长度。

虽然在计算机的底层,数据就是一堆0或1。不过在代码的层面上,我们要发送的数据就是一堆字符串。而一个英文字符串通常是用一个字节(8bit)来表示。所以这就涉及到一个问题:如何将整型的数字转为固定4个字符串(4个字节)来表示。

如何将整型的数字转为固定四个字节表示

在计算机的底层中,整型的数字也是采用二进制表示。所以我的做法就是取出整型数字的末8bit作为一个字符(字节),再取接下来的8bit。以此类推,直到满四个字节。

代码如下:

$length = 1145258561;
$str = '';
for ($i = 0; $i < 4; $i++) {
    $str .= chr($length & 0xff); // 取出末尾8bit并转为字符
    $length = $length >> 8; // 右移8位
}
var_dump($str);