@KraymiKrons

Как сделать конвертацию байтов?

В C# функция BitConverter
Как на PHP реализовать ее?
Вот код на PHP
$string = "RustExtended/4.0 (Bootloader; Data Request)";
$buffer = array();
for($i = 0; $i < strlen($string); $i++){
     $buffer[] = ord($string[$i]);
}
//print_r($buffer);

for ($i = sizeof($buffer) - 2; $i >= 0; $i--)
                {
                    $buffer[$i] ^= $buffer[$i + 1];
                }
                $buffer[sizeof($buffer) - 1] ^= $buffer[0];
                $buffer = implode("", $buffer);
                print_r($buffer);


Я пытаюсь перевести с C#
Byte[] buffer = Encoding.UTF8.GetBytes(text);
                for (int i = buffer.Length - 2; i >= 0; i--)
                {
                    buffer[i] ^= buffer[i + 1];
                }
                buffer[buffer.Length - 1] ^= buffer[0];
                return BitConverter.ToString(buffer).Replace("-", "");


На C# я получаю такую вот шифровку
1E2277194F3551144276125503762C6B3D561A603144094A0B643558611773344C3A6334660A69037017450244742D7E3C6F356D2B1A401856662D7C4162
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
twobomb
@twobomb
function myfunc($text){
	$text = utf8_encode($text);

	$buffer = [];
	foreach(mb_str_split($text) as $v)
		$buffer[] = ord($v);

	for ($i = count($buffer)-2; $i >= 0; $i--)
		$buffer[$i] ^= $buffer[$i+1];

	$buffer[count($buffer) - 1] ^= $buffer[0];

	return implode(array_map("dec2hexbyte", $buffer));
}

function dec2hexbyte($number){
	$hexval = dechex($number);
	if(mb_strlen($hexval) == 1)
		$hexval = "0".$hexval;
    return mb_strtoupper($hexval);
}


$text = "my text";
echo myfunc($text);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
decbin/bindec pack/unpack base_convert
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы