toInt(); } public static function binToBigInteger(string $value): BigInteger { return self::hexToBigInteger(bin2hex($value)); } public static function hexToInt(string $value): int { return self::hexToBigInteger($value)->toInt(); } public static function hexToBigInteger(string $value): BigInteger { return BigInteger::fromBase($value, 16); } public static function hexToString(string $value): string { return BigInteger::fromBase(bin2hex($value), 16)->toBase(10); } public static function intToHex(int $value): string { return BigInteger::of($value)->toBase(16); } public static function decode(string $data): string { $decoded = base64_decode(strtr($data, '-_', '+/'), true); if (false === $decoded) { throw new InvalidArgumentException('Invalid data provided'); } return $decoded; } public static function assertString($data, ?string $message = null): void { if (!is_string($data)) { throw new InvalidArgumentException($message); } } }