protected function decodeFromBinary($descriptor)
{
$descriptor = bin2hex($descriptor);
$this->revision = hexdec(substr($descriptor, 0, 2));
$this->rmControlFlags = new Flags(hexdec(substr($descriptor, 2, 2)));
$this->controlFlags = new ControlFlags($this->hexUShort16Le2Int(substr($descriptor, 4, 4)));
$offsetOwner = $this->hexULong32Le2int(substr($descriptor, 8, 8)) * 2;
$offsetGroup = $this->hexULong32Le2int(substr($descriptor, 16, 8)) * 2;
$offsetSacl = $this->hexULong32Le2int(substr($descriptor, 24, 8)) * 2;
$offsetDacl = $this->hexULong32Le2int(substr($descriptor, 32, 8)) * 2;
if ($offsetOwner !== 0) {
$this->owner = new SID(hex2bin(substr($descriptor, $offsetOwner)));
}
if ($offsetGroup !== 0) {
$this->group = new SID(hex2bin(substr($descriptor, $offsetGroup)));
}
if ($offsetSacl !== 0) {
$this->sacl = new Sacl(hex2bin(substr($descriptor, $offsetSacl)));
}
if ($offsetDacl !== 0) {
$this->dacl = new Dacl(hex2bin(substr($descriptor, $offsetDacl)));
}
}