@ 2023-01-09T00:22:01Z <?php
// https://stackoverflow.com/questions/35536141/converting-binary-data-to-ascii-with-php-any-possibility/35536281#35536281
function bin2ascii($input) {
$output = '';
for($i=0; $i<strlen($input); $i+=8) {
$output .= chr(intval(substr($input, $i, 8), 2));
}
return $output;
}
https://stackoverflow.com/questions/6382738/convert-string-to-binary-then-back-again-using-php/6382880#6382880
function ascii2bin($input) {
//return array_reduce(str_split($input), fn ($acc, $i) => $acc .= decbin(ord($i)));
return array_reduce(str_split($input), fn ($acc, $i) => $acc .= str_pad(decbin(ord($i)), 8, '0', STR_PAD_LEFT));
}
// https://stackoverflow.com/questions/11946696/php-signed-binary-strings/11946971#11946971
function bindec2($bin)
{
if (strlen($bin) == 64 && $bin[0] == '1') {
for ($i = 0; $i < 64; $i++) {
$bin[$i] = $bin[$i] == '1' ? '0' : '1';
}
return (bindec($bin) + 1) * -1;
}
return bindec($bin);
}
$i = -114514;
var_dump(decbin($i));
$trimmedPadding = ltrim(decbin($i), $i < 0 ? '1' : '0');
var_dump($trimmedPadding);
$signBitsPading = $i < 0
? str_repeat('1', 8 - strlen($trimmedPadding) % 8)
: str_repeat('0', 8 - strlen($trimmedPadding) % 8);
var_dump($signBitsPading . $trimmedPadding);
var_dump(bin2hex(bin2ascii($signBitsPading . $trimmedPadding)));
$o = rtrim(base64_encode(bin2ascii($signBitsPading . $trimmedPadding)), '=');
var_dump($o);
$d = base64_decode($o);
var_dump(bin2hex($d));
$bits = ascii2bin($d);
$signBit = $bits[0];
$paddedBits = str_pad($bits, 64, $signBit, STR_PAD_LEFT);
$restBits = substr($bits, 1);
var_dump($bits);
var_dump($signBit);
var_dump($restBits);
var_dump($paddedBits);
var_dump(bindec($paddedBits));
var_dump(intval($paddedBits, 2));
var_dump(bindec2($paddedBits));
$paddedHexs = str_pad($d, 8, $signBit === '0' ? "\x00" : "\xFF", STR_PAD_LEFT); // 保持decbin()输出的大端序octet
var_dump(bin2hex($paddedHexs));
var_dump(unpack('q', $paddedHexs)); // signed long long (always 64 bit, machine byte order)
var_dump(unpack('Q', $paddedHexs)); // unsigned long long (always 64 bit, machine byte order)
var_dump(unpack('J', $paddedHexs)); // unsigned long long (always 64 bit, big endian byte order)
var_dump(unpack('P', $paddedHexs)); // unsigned long long (always 64 bit, little endian byte order)
$paddedHexs = str_pad(strrev($d), 8, $signBit === '0' ? "\x00" : "\xFF", STR_PAD_RIGHT); // 大端序转小端序octet
var_dump(bin2hex($paddedHexs));
var_dump(unpack('q', $paddedHexs)); // signed long long (always 64 bit, machine byte order)
var_dump(unpack('Q', $paddedHexs)); // unsigned long long (always 64 bit, machine byte order)
var_dump(unpack('J', $paddedHexs)); // unsigned long long (always 64 bit, big endian byte order)
var_dump(unpack('P', $paddedHexs)); // unsigned long long (always 64 bit, little endian byte order)
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).
Version System time (s) User time (s) Memory (MiB) 8.3.11 0.008 0.000 16.75 8.3.10 0.011 0.000 16.45 8.3.9 0.012 0.004 26.77 8.3.8 0.003 0.006 18.55 8.3.7 0.007 0.015 16.88 8.3.6 0.003 0.013 16.88 8.3.5 0.015 0.000 16.82 8.3.4 0.010 0.003 20.29 8.3.3 0.006 0.009 18.98 8.3.2 0.007 0.000 24.18 8.3.1 0.003 0.006 24.66 8.3.0 0.000 0.008 26.16 8.2.23 0.003 0.006 20.94 8.2.22 0.007 0.003 24.06 8.2.21 0.011 0.004 26.77 8.2.20 0.006 0.003 16.88 8.2.19 0.012 0.003 16.58 8.2.18 0.009 0.006 25.92 8.2.17 0.012 0.003 19.21 8.2.16 0.009 0.006 22.96 8.2.15 0.006 0.003 25.66 8.2.14 0.008 0.000 24.66 8.2.13 0.008 0.000 26.16 8.2.12 0.004 0.004 26.16 8.2.11 0.009 0.000 20.35 8.2.10 0.014 0.000 17.72 8.2.9 0.008 0.000 17.84 8.2.8 0.005 0.003 17.50 8.2.7 0.006 0.003 17.50 8.2.6 0.004 0.004 17.80 8.2.5 0.003 0.006 18.07 8.2.4 0.000 0.008 21.11 8.2.3 0.008 0.000 18.24 8.2.2 0.004 0.004 19.35 8.2.1 0.007 0.004 17.72 8.2.0 0.000 0.009 17.77 8.1.29 0.007 0.003 30.84 8.1.28 0.013 0.006 25.92 8.1.27 0.005 0.003 24.66 8.1.26 0.004 0.004 26.35 8.1.25 0.004 0.004 28.09 8.1.24 0.010 0.000 22.60 8.1.23 0.008 0.004 21.01 8.1.22 0.005 0.003 17.78 8.1.21 0.010 0.000 19.10 8.1.20 0.000 0.009 17.48 8.1.19 0.004 0.004 17.60 8.1.18 0.004 0.004 18.10 8.1.17 0.004 0.004 18.63 8.1.16 0.004 0.004 18.88 8.1.15 0.008 0.000 18.72 8.1.14 0.008 0.003 17.38 8.1.13 0.015 0.004 17.48 8.1.12 0.017 0.007 17.53 8.1.11 0.008 0.012 17.52 8.1.10 0.017 0.006 17.47 8.1.9 0.015 0.006 17.50 8.1.8 0.015 0.004 17.54 8.1.7 0.016 0.004 17.53 8.1.6 0.009 0.009 17.61 8.1.5 0.015 0.003 17.52 8.1.4 0.003 0.007 17.66 8.1.3 0.007 0.007 17.54 8.1.2 0.009 0.006 17.59 8.1.1 0.014 0.007 17.55 8.1.0 0.009 0.009 17.46 8.0.30 0.000 0.007 19.96 8.0.29 0.000 0.007 16.88 8.0.28 0.007 0.000 18.52 8.0.27 0.011 0.005 16.84 8.0.26 0.013 0.004 16.75 8.0.25 0.010 0.007 16.88 8.0.24 0.013 0.004 16.80 8.0.23 0.017 0.003 16.89 8.0.22 0.015 0.003 16.83 8.0.21 0.020 0.000 16.68 8.0.20 0.010 0.005 16.90 8.0.19 0.013 0.004 17.01 8.0.18 0.016 0.000 16.87 8.0.17 0.011 0.004 16.84 8.0.16 0.010 0.005 16.80 8.0.15 0.008 0.005 16.74 8.0.14 0.015 0.004 16.70 8.0.13 0.014 0.003 16.83 8.0.12 0.005 0.008 16.75 8.0.11 0.007 0.007 16.76 8.0.10 0.008 0.008 16.86 8.0.9 0.006 0.011 16.83 8.0.8 0.009 0.003 16.91 8.0.7 0.013 0.005 16.80 8.0.6 0.012 0.005 16.83 8.0.5 0.007 0.010 16.76 8.0.3 0.012 0.006 16.82 8.0.2 0.011 0.007 16.90 8.0.1 0.000 0.015 16.96
preferences:dark mode live preview
29.42 ms | 403 KiB | 5 Q