在 PHP 中将值数组转换为单个浮点值?

2024-04-03

我有一个包含这些值的数组(当数组打印为print_r();

Array:
[0] => 66 
[1] => 233
[2] => 204
[3] => 205

十六进制值是:

Array:
[0] => 0x42 
[1] => 0xE9
[2] => 0xCC
[3] => 0xCD

我想做的是将这个 4 字节数组转换为浮点值。如果我使用implode();要将数组转换为值,只需将字符串组合成66233204205代替0x42E9CCCD哪些不相似。因此我不能使用floatval()。 PHP 对我来说是新的,所以使用字符串值而不是实际的位,就像我在 C 中一样。

我在想的是如何implode()它与十六进制值,而不是那些整数,然后使用floatval().

大家有什么想法吗?

EDIT:

这样就更清楚了,我应该得到116.900作为结果


您必须执行一项简单的数学运算才能将数组的十六进制值一个接一个地连接起来。算法如下:

  • 将数组的第一个十六进制值分配给结果变量,$concat在这种情况下。
  • Use a for循环从第 2 个元素循环遍历数组直到第 n 个元素
  • 在循环的每次迭代中,将结果变量的现有十六进制值左移 8 倍,并将新的十六进制值放入结果变量的最低有效 8 位中。

    // Suppose $array is your original array
    $concat = $array[0];
    $count = count($array);
    for($i = 1; $i < $count; $i++){
        $concat =  ($concat << 8) + $array[$i];
    }
    
    // display concatenated hex value: 42e9cccd
    var_dump(dechex($concat));
    
    // Now do your operation on the concatenated hex value
    

这是一个演示,https://eval.in/844793 https://eval.in/844793

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 PHP 中将值数组转换为单个浮点值? 的相关文章

随机推荐