gpt4 book ai didi

delphi - 将八进制数转换为十进制和十六进制

转载 作者:行者123 更新时间:2023-12-03 18:55:32 26 4
gpt4 key购买 nike

我正在编写一个将八进制数转换为十进制和十六进制的程序。我编写了一个名为 OctToInt 的函数。

function OctToInt(Value: string): Longint;
var
i: Integer;
int: Integer;
begin
int := 0;
for i := 0 to Length(Value) do
begin
int := int * 8 + StrToInt(Copy(Value, i, 1));
end;
Result := int;
end;

我这样调用这个函数:

var oct:integer;
begin
oct:=OctToInt(Edit13.Text);
Edit15.Text:=IntToStr(oct);
end;

当我输入 34(八进制)时,十进制数应该是 28,但程序给我的是 220。你知道为什么吗?

此外,您对转换器 OctToHex 有什么想法吗?

最佳答案

您必须将“您的”for 的开头更改为 1。

function OctToInt(Value: string): Longint;
var
i: Integer;
int: Integer;
begin
int := 0;
for i := 1 to Length(Value) do //here you need 1, not 0
begin
int := int * 8 + StrToInt(Copy(Value, i, 1));
end;
Result := int;
end;

Octal-Hexadecimal 的转换可能很难做到,所以我建议你换一种方式:

EditHexadecimal.Text:=(IntToHex(StrToInt(EditInteger.Text),8));  

正如您在此处看到的,使用此代码,EditHexadecimal 是您放置十六进制数的编辑。通过该行,我将数字从十进制转换为十六进制。

您已经有了十进制数,因为您使用函数 OctToInt 获得了它,因此您不需要更多代码。

关于delphi - 将八进制数转换为十进制和十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18324335/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com