在 Pascal 中处理十六进制数

Manipulating hexadecimal numbers in Pascal

我目前正在阅读二进制和十六进制数字操作,我发现完成一项任务很困难,想知道是否有人可以帮助我澄清这个问题。

我有一个十六进制数“04831037”,我需要通过 Pascal 程序将第一个数字 (0) 替换为“1”。我不知道该怎么做。

我知道如何通过以下方式将整数转换为十六进制值:

var 
  iNumber : Integer;

begin
  iNumber := 75698231;
  writeln(IntToHex(iNumber, 8));
end.

> Output: 04831037

但现在我对如何替换输出中的单个数字感到困惑。任何帮助将不胜感激

十六进制数以 16 为底,即每个数字代表一个值 0..15.

形成ex的值。 16,即可以使用 $10 以下表达式: (注意:$符号表示该值为十六进制值

16 = = 1*161 + 0*160

值 28 ($1C) 表示为:

28 = C = 1*161 + 12*160

要将 $10000000 添加到一个数字,请使用

000000 = 1*167

代码如下:

iNumber := iNumber + 000000; 

我们来看问题:

I have a hexadecimal number '04831037' and I need to replace the first number (0) with a '1'

这意味着您将先减去 $00000000 的数字,然后加上 $10000000。

代码为:

iNumber := 831037;
iNumber := iNumber - [=11=]000000 + 000000;
WriteLn(IntToHex(iNumber,8)); // Writes '14831037'