我想通過PHP中的網絡發送UDP消息。 該消息具有預定義的協議,即消息必須是10個字節長,其中前3個字節用於條目1,2個字節用於條目2,3個字節用於條目3,並且最後2個字節用於條目4.在php中等價於memcpy
我該如何在PHP中做到這一點?如在C中,我們可以使用memcpy。
我想通過PHP中的網絡發送UDP消息。 該消息具有預定義的協議,即消息必須是10個字節長,其中前3個字節用於條目1,2個字節用於條目2,3個字節用於條目3,並且最後2個字節用於條目4.在php中等價於memcpy
我該如何在PHP中做到這一點?如在C中,我們可以使用memcpy。
只需創建一個所需字節的字符串。字符串的字符是PHP中的一個字節。
但消息包含不同的類型,如intergers,字符串等,例如我想爲條目2插入一個整數值,這是2個字節長,整數值是1207(4字節,因爲字符串的字符是字節在PHP中) –
我真的希望有一種快速的方式來做到這一點在PHP中!所有PHP字符串函數 都會返回一個字符串,而不是直接複製到現有字符串中。 如果你有兆字節 - 大小的數組,從內存的角度來看後者是非常有用的。下面的代碼是我想要的那種PHP變體... 如果你可以直接在PHP中作爲本地 函數調用,而不是必須製作自己的擴展,那麼這將會很不錯。在下面, $ source是一個很短的字符串,我們希望複製 更長的字符串$ destination中的部分數據。我們通過引用傳遞後者,所以我們不通過執行函數調用來浪費內存。
function charCopy($source, &$destination, $start, $length)
{
$endk = intval($length - 1);
$end = intval($start + $endk);
$start = intval($start);
for($j = $end, $k = $endk; $j >= $start; $j--, $k--) {
$destination[$j] = $source[$k];
}
}
這很接近。
function &memcpy(&$dest,$src,$n){
$dest=substr($src,0,$n) . substr($dest,$n);
return $dest;
}
注意,與C,PHP管理內存&的realloc給你,你可以不溢出:PI不認爲你可以在用戶態的精確克隆的memcpy,你可以拋出一些異常/ trigger_error( )如果$ n> strlen($ src)或$ n> strlen($ dest)ofc。如果需要,上面的代碼將自動爲您重新設置$ dest,與C的memcpy不同。
簡單地重複使用數組將會做什麼? –
你能舉個例子嗎? –