- Output for 8.0.1 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
- int(128) int(9223372036854775807)
<?php
function readUnsignedVarLong(string $buffer, int &$offset) : int{
$value = 0;
for($i = 0; $i <= 63; $i += 7){
if(!isset($buffer[$offset])){
throw new Exception("No bytes left in buffer");
}
$b = ord($buffer[$offset++]);
$value |= (($b & 0x7f) << $i);
if(($b & 0x80) === 0){
return $value;
}
}
throw new Exception("VarLong did not terminate after 10 bytes!");
}
$a = 0;
var_dump(0x80, readUnsignedVarLong(str_repeat(chr(255), 9) . chr(0x80 << 1), $a));