Inno setup Inno设置-如何将十进制数转换为十六进制数?

Inno setup Inno设置-如何将十进制数转换为十六进制数?,inno-setup,Inno Setup,我已经知道如何将十六进制转换为十进制,但我不知道相反的方法。 我需要一个函数将十进制值转换为十六进制,然后使用RegWriteBinaryValue将其写入注册表。目前没有用于将整数值转换为十六进制表示法的内置函数。这里有一个函数可以做到这一点值是要转换的数字数字表示要返回的十六进制数字的最小数目: [代码] 常数 六位数='0123456789ABCDEF'; 函数IntToHex(值:整数;数字:整数):字符串; 变量 I:整数; 开始 设置长度(结果,位数); 对于I:=0到数字-1 do

我已经知道如何将十六进制转换为十进制,但我不知道相反的方法。
我需要一个函数将十进制值转换为十六进制,然后使用RegWriteBinaryValue将其写入注册表。

目前没有用于将整数值转换为十六进制表示法的内置函数。这里有一个函数可以做到这一点<代码>值是要转换的数字<代码>数字表示要返回的十六进制数字的最小数目:

[代码]
常数
六位数='0123456789ABCDEF';
函数IntToHex(值:整数;数字:整数):字符串;
变量
I:整数;
开始
设置长度(结果,位数);
对于I:=0到数字-1 do
开始
结果[数字-I]:=六位数[(值和15)+1];
值:=值shr 4;
结束;
当值为0时
开始
结果:=六位数[(值和15)+1]+结果;
值:=值shr 4;
结束;
结束;
[code]
函数IntToHex2(值:整数):字符串;
开始
结果:=格式('.8x',[值]);
结束;
另一种方式:

function IntToHex2(Value: Integer; Digits: Integer): string;
begin
    Result := Format('%.' + IntToStr(Digits) + 'x', [Value, Value]);
end;

只保留一个答案。这只是一种改进,而不是“另一种方式”。同样,当只有一个格式说明符时,您可以使用
[Value,Value]
。所以应该是
[Value]
。使用
Format
函数实现可变位数的更简洁的方法是
Result:=Format('%.*x',[digits,Value])