将字符串转换为 Cardinal / UInt32

Converting a string to Cardinal / UInt32

我需要将字符串转换为无符号 32 位整数 (Cardinal)。

System.SysUtils 单元中有许多有用的功能,例如:

但我找不到任何 StrToCardinalStrToUIntStrToUInt32 函数。

为了遵循作为评论发布的 Andreas Rejbrand 想法,我建议:

function StrToCardinal(const S : String) : Cardinal;
var
    I64 : UInt64;
begin
    I64 := StrToUInt64(S);
    if (I64 shr 32) <> 0 then
        raise EConvertError.Create('StrToCardinal invalid value');
    Result := Cardinal(I64);
end;