как получить тоже значение с кода с++ на php

Есть код где nSeedKey равен 1852115210 это же значение нужно сделать в php

#include <iostream>
#include <string.h>

using namespace std;


int main()
{
    char pDstData[26] = {
        0x0A, 0x09, 0x65, 0x6E, 0x64, 0x0D, 0x0A, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x66,
        0x61, 0x6C, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x65, 0x6E 
    };

   
    unsigned long nSeedKey = 0;
    memcpy(&nSeedKey, pDstData, 4); 
    // nSeedKey = 1852115210

    unsigned long nSeedCnt = nSeedKey%50;
    //nSeedCnt = 10
    
    cout << "nSeedKey:"<< nSeedKey << " - " << "Seed:"<< nSeedCnt;

    return 0;
}

вот это все что я смог накатать на php

$pDstData = [
        0x0A, 0x09, 0x65, 0x6E, 0x64, 0x0D, 0x0A, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x66,
        0x61, 0x6C, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x65, 0x6E
    ];

$nSeedKey = 0; 
//??????
//memcpy(&nSeedKey, pDstData, 4); 


$SeedCnt = $nSeedKey%50;

echo $SeedCnt ." - ". $nSeedKey;

все не как не могу сообразить как сделать чтобы значение было тоже самое что и в c++

заранее спасибо.


Ответы (1 шт):

Автор решения: user7860670

Для распаковки бинарных данных существует функция unpack. 4-х байтовый unsigned long читается форматом V:

$pDstData = "\x0A\x09\x65\x6E\x64\x0D\x0A\x09\x72\x65\x74\x75\x72\x6E\x20\x66\x61\x6C\x73\x65\x0D\x0A\x0D\x0A\x65\x6E";
$array = unpack("V", $pDstData);
$nSeedKey = $array[1]; 
$SeedCnt = $nSeedKey%50;

echo $SeedCnt ." - ". $nSeedKey;
→ Ссылка