delphi 负数 2进制转10进制
时间: 2023-08-05 11:01:53 浏览: 144
在 Delphi 中,可以使用 `StrToInt` 函数将二进制字符串转换为十进制整数。但是,对于负数的二进制表示,需要先将其转换为补码表示,再进行转换。
以下是将负数的二进制字符串转换为十进制整数的示例代码:
```delphi
function BinToDec(binStr: string): Integer;
var
i: Integer;
isNegative: Boolean;
begin
isNegative := False;
// 检查是否为负数
if binStr[1] = '1' then
begin
isNegative := True;
// 将二进制字符串转换为补码表示
for i := 1 to Length(binStr) do
begin
if binStr[i] = '0' then
binStr[i] := '1'
else
binStr[i] := '0';
end;
binStr := IntToStr(StrToInt(binStr) + 1);
end;
// 将补码或正数的二进制字符串转换为十进制整数
Result := 0;
for i := 1 to Length(binStr) do
begin
Result := Result * 2 + StrToInt(binStr[i]);
end;
// 如果为负数,则将结果取负
if isNegative then
Result := -Result;
end;
```
使用示例:
```delphi
var
binStr: string;
decNum: Integer;
begin
binStr := '1101'; // -3 的二进制表示
decNum := BinToDec(binStr); // 将二进制字符串转换为十进制整数
ShowMessage(IntToStr(decNum)); // 显示结果:-3
end;
```
请注意,这里的二进制字符串必须是以字符串形式传递给函数的。如果您有一个二进制数值,可以使用 `IntToStr` 函数将其转换为二进制字符串。
阅读全文