gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 01:13:45 25 4
gpt4 key购买 nike

我有一个包含这些值的数组(当使用 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()

有什么想法吗?

编辑:

为了更清楚一点,我应该得到 116.900 作为结果

最佳答案

您必须执行一个简单的数学运算,将数组的十六进制值一个接一个地连接起来。该算法将是这样的:

  • 将数组的第一个十六进制值分配给结果变量,在本例中为 $concat
  • 使用 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

关于php - 在 PHP 中将值数组转换为单个浮点值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45654601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com