<?php
$score = 64;
$firstName = 'Jack';
$lastName = 'Saliv';
$age = 21;
$expected = 'FFFEFF404A00610063006B00530061006C00690076FFFEFF15';
$expectedCorrected = 'FFFEFF404A00610063006B00530061006C0069007600FFFEFF15';
// Convert to UTF-16LE and get hex, https://stackoverflow.com/a/16080439/231316
$nameAsUtf16LE = unpack('H*', mb_convert_encoding($firstName.$lastName, 'UTF-16LE', 'UTF-8'));
// UTF-16LE BOM
$utf16LeBom = 'FFFE';
// Convert to hex strings
$scoreAsHex = dechex($score);
$ageAsHex = dechex($age);
$finalString = sprintf(
'%1$s%2$s%3$s',
$utf16LeBom.$scoreAsHex,
strtoupper($nameAsUtf16LE[1]), // This is 1-based, not 0-based
$utf16LeBom.$ageAsHex,
);
$numberPadding = 'FF';
$finalStringWithNumbersPadded = sprintf(
'%1$s%2$s%3$s',
$utf16LeBom.$numberPadding.$scoreAsHex,
strtoupper($nameAsUtf16LE[1]), // This is 1-based, not 0-based
$utf16LeBom.$numberPadding.$ageAsHex,
);
echo 'Calculated : '.$finalString;
echo PHP_EOL;
echo 'Padded : '.$finalStringWithNumbersPadded;
echo PHP_EOL;
echo 'Expected : '.$expected;
echo PHP_EOL;
echo 'Expected Corrected : '.$expectedCorrected;
assert($finalStringWithNumbersPadded === $expectedCorrected);
- Output for 7.3.0 - 7.3.25, 8.1.23 - 8.1.33, 8.2.6 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
- Calculated : FFFE404A00610063006B00530061006C0069007600FFFE15
Padded : FFFEFF404A00610063006B00530061006C0069007600FFFEFF15
Expected : FFFEFF404A00610063006B00530061006C00690076FFFEFF15
Expected Corrected : FFFEFF404A00610063006B00530061006C0069007600FFFEFF15
- Output for 5.6.40, 7.0.0, 7.1.26, 7.2.34
- Parse error: syntax error, unexpected ')' in /in/XTdjA on line 26
Process exited with code 255.
preferences:
86.84 ms | 407 KiB | 5 Q