PHP Decimal для base64 дает другой результат с помощью javascript

javascript #php

#javascript #php

Вопрос:

может кто-нибудь сказать мне, почему результат fo base64 дает другой результат для PHP

с помощью Javascript это дает правильный результат

десятичное число 68 98 7 покажет RGIH https://v2.cryptii.com/decimal/base64
javascript десятичный в base64

почему на php я не вижу такого же результата

с помощью этого кода

$x = floatval('68 98 7'); echo base64_encode($x);

покажет Njg =

Спасибо

Ответ №1:

Это связано с тем, что веб-сайт, который вы опубликовали, интерпретирует десятичные дроби не как десятичные дроби, а как десятичные значения для их аналогов ASCII. Если вы хотите выполнить ту же операцию в PHP, вы можете сначала преобразовать десятичную строку в массив, взорвав пробелы, применяя chr к каждой записи массива, а затем base64 кодирует сжатый массив:

 $decimals = '68 98 7';
$chars = array_map(fn($decimal) => chr((int)$decimal), explode(' ',$decimals));
echo base64_encode(implode('', $chars));