PHP 数据追加数据后的长度问题
有一条数据 205,转为 8 位字节后的值为 cd000000, 现在对每字节加 0x33,结果值为 100333333,现在想保持这个数据长度为 8 位。
咨询了一些朋友说是要判断进位情况,然后取低位,弄判断没太明白应该怎么处理,老哥们帮帮我
有一条数据 205,转为 8 位字节后的值为 cd000000, 现在对每字节加 0x33,结果值为 100333333,现在想保持这个数据长度为 8 位。
咨询了一些朋友说是要判断进位情况,然后取低位,弄判断没太明白应该怎么处理,老哥们帮帮我
/**
* 数据加 0x33
* @param $data //数据
* @return string
*/
function addData33($data)
{
$data = str_split($data,2);
for($i = 0;$i<count($data);$i++)
{
$data[$i] = dechex(hexdec($data[$i]) + 0x33);
}
return implode(“”,$data);
}
然后默认你 205 是无符号整数,不然如果是有符号整数,还会涉及补吗转化更加麻烦,
所以你无符号 205 转为 8 个字节 64 位表示是 “cd 00 00 00 00 00 00 00”这个表示中每一字符代表 4 个位的二进制,
对每字节加 0x33,就是 整体加 “33 33 33 33 33 33 33 33” 也就是十进制 3689348814741910500
所以如果你$data 是 16 进制字符串的话可以这么写
function addData33($data)
{
$int = null;
eval(“$int = 0x”. $data.”;”);
return 3689348814741910500+$int;
}
所以 如果有一个字符串 我应该怎么取它的低 8 位?
所以 如果有一个字符串 我应该怎么取它的低 8 位?
直接无脑读两个字符处理两个字符就好了
function addData33($data)
{
$data = str_split($data,2);
for($i = 0;$i<count($data);$i++)
{
$data[$i] = dechex((hexdec($data[$i]) + 0x33)&0xff);
}
return implode(“”,$data);
}
但是搜到篇这个: https://blog.csdn.net/u012351051/article/details/77869547
末尾写到:
A4 56 79 38-具体数据,分析时,应减 33,所以为:
A4-33=71
56-33=23
79-33=46
38-33=5
实际的电表数为:54623.71 度
是不是你的 205,是不需要从数值转成 hex 的,而是用字面量表达成 05 02 00 00,再+33h,变成 38 35 33 33 这样的表达方式
(考虑到十进制最大就是 99,+33h 也不会超 FF )