PHP строка "unsigned long" (из C ++) - PullRequest
0 голосов
/ 22 октября 2011

У меня есть этот код на C ++, который возвращает выводит следующее число

int main(int argn, char** argv)
{
    cout << (*((unsigned long*)"P3TF")) << endl;
    cin.get();
    return 0;
}

Как я могу достичь вышеизложенного в PHP (то есть строка "P3TF" в unsigned long int).Я пытался использовать метод пакета:

<?php
$lol = pack('N', 'P3TF');
var_dump( $lol, // returns jumbled up characters
          ord($lol[0]), // returns int 0
          ord($lol[1]), // returns int 0
          ord($lol[2]), // returns int 0
          ord($lol[3]), // returns int 0
          ord($lol[0]).ord($lol[1]).ord($lol[2]).ord($lol[3]) // returns 4 zeros as a string.
);
?>

Мне нужно это в бигендовом порядке байтов, поэтому я не использовал pack('V') или pack('L').

Кто-нибудь знает, как этого добиться?

Спасибо!

1 Ответ

1 голос
/ 22 октября 2011

Если это буквально "P3TF" в реальном коде, почему бы не преобразовать его один раз и не определить константу в коде PHP?

В противном случае вам нужно распаковать , а не упаковать,например, работает

<?php
$in = 'P3TF';
$arr = unpack('N', $in);
printf("%08x\n", $arr[1]);
?>

Дает 50335446, что является кодами ASCII для 'P' '3' 'T' 'F' в шестнадцатеричном (сцепленном) виде

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...