亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 PHP 中連接多個字節

如何在 PHP 中連接多個字節

PHP
互換的青春 2023-09-15 17:46:16
我在php.net和這里的自學到目前為止還沒有讓我找到任何方法!我不想在這里展示我對像&and >>or 這樣的運算符的實驗- 太尷尬了!<<起點是具有整數值(始終為 8 位)的不同長度的數組。例如:[178, 89, 1]它們的二進制編碼等效...10110010, 01011001, 00000001應該是,最低有效位在前,...01001101, 10011010, 10000000連接:010011011001101010000000有人可以一步步向我解釋該過程,以便我理解php中的位操作嗎?謝謝后記:我不想用字符串操作來解決問題(我可以這樣做 - 但它非常慢?。?,而是用位操作來解決。
查看完整描述

3 回答

?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

使用decbin()但你需要0向左填充,否則000000011再次變成。

一種方法是使用array_reduce(),盡管您可以通過多種方式循環數組。

<?php

$array = [178, 89, 1];


echo array_reduce($array, function ($acc, $byte) {

? ?return $acc.strrev(str_pad(decbin($byte), 8, 0, STR_PAD_LEFT));

})

結果:010011011001101010000000

https://3v4l.org/D4qGr


查看完整回答
反對 回復 2023-09-15
?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

也許你需要這樣的東西:


<?php

$array = [178, 89, 1];


$output = 0;

foreach ($array as $v) {

    for ($i = 0; $i < 8; $i++) {

        $output = ($output << 1) | ($v & 1);

        $v = $v >> 1;

    }

}


echo $output . " " . str_pad(decbin($output), 24, 0, STR_PAD_LEFT);

現在一步一步:

  1. 對于輸入數組中的每個元素,我們得到第 0 位(不太重要)-$v & 1

  2. 輸出變量左移以為該位提供空間$output << 1

  3. |位被設置到輸出變量部分的最右邊的位置

  4. 我們將變量向右移動,因此第 1 位變為 0

  5. 重復其余部分


查看完整回答
反對 回復 2023-09-15
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

<?php

function dec2bin_i($decimal_i)

{

 bcscale(0);


 $binary_i = '';

 do

  {

   $binary_i = bcmod($decimal_i,'2') . $binary_i;

   $decimal_i = bcdiv($decimal_i,'2');

  } while (bccomp($decimal_i,'0'));


 return($binary_i);

}

//empty output string

$output = '';

//define array

$array = [178, 89, 1];

//loop array values

foreach($array as $value){

    //convert to binary and concatenate

    $output .= dec2bin_i($value);

}

//show output

echo $output;

?>


查看完整回答
反對 回復 2023-09-15
  • 3 回答
  • 0 關注
  • 165 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號