Возможно вы слышали, есть такая штука как
кодировки текста, и все чаще используется
UTF-8, который многобайтная кодировка.
А ord() - функция для работы с однобайтными.
function showOrd($char) {
echo "\"$char\""
. ' ord='.ord($char)
. ' mb_ord='.mb_ord($char)
. PHP_EOL;
}
showOrd('а'); // "а" ord=208 mb_ord=1072
showOrd('ф'); // "ф" ord=209 mb_ord=1092
showOrd('я'); // "я" ord=209 mb_ord=1103
Буква 'Ф' в utf-8 представлены двумя байтами, а не одним, и если вы примените ord() к обоим байтам, то получите вот такой результат:
$str = "Ф";
for ( $pos=0; $pos < strlen($str); $pos ++ ) {
$byte = substr($str, $pos);
echo 'Byte ' . $pos . ' of $str has value ' . ord($byte) . PHP_EOL;
}
// Byte 0 of $str has value 208
// Byte 1 of $str has value 164
Посмотрите описание юникодовской буквы 'Ф', обратите внимание, что бинарное представление это 11010000:10100100, первый байт 208, второй 164.
https://www.fileformat.info/info/unicode/char/424/...
А символ вообще состоит сразу из четырех байт.
Вам достаточно научиться читать файл по одному байту в бинарном виде, и тогда ни ord() ни charCodeAt() не понадобится, у вас сразу юудет бинарное представление этого байта.
просто нужно стартовые игровые пакеты запарсить.
у вас они в виде строки или это бинарник? Если бинарник, то и работайте с ним как с бинарником.
fReader.readAsArrayBuffer(file);
Все возможности для этого в js есть.
https://developer.mozilla.org/en-US/docs/Web/JavaS...