将字符串转换为 Cardinal / UInt32
Converting a string to Cardinal / UInt32
我需要将字符串转换为无符号 32 位整数 (Cardinal
)。
在 System.SysUtils
单元中有许多有用的功能,例如:
StrToInt
StrToInt64
StrToUInt64
但我找不到任何 StrToCardinal
、StrToUInt
或 StrToUInt32
函数。
为了遵循作为评论发布的 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;
我需要将字符串转换为无符号 32 位整数 (Cardinal
)。
在 System.SysUtils
单元中有许多有用的功能,例如:
StrToInt
StrToInt64
StrToUInt64
但我找不到任何 StrToCardinal
、StrToUInt
或 StrToUInt32
函数。
为了遵循作为评论发布的 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;