十六进制数的取模运算(50)

  • 主题发起人 主题发起人 张利中
  • 开始时间 开始时间

张利中

Unregistered / Unconfirmed
GUEST, unregistred user!
一个十六进制字符序列:7318efc576d8c24b47540d5acfd58e5a求:7318efc576d8c24b47540d5acfd58e5a 除以 1600(十进制数) 的余数?怎样用delphi实现?
 
转成10进制 再除
 
这个序列太长,难以直接转换为整数进行计算,可以这样——从高位开始,一个一个的截取十六进制字符,转换为整数后对1600进行取余,得到的结果乘以16后叠加进后一个字符的计算过程,如下所示:function HexStrMod(const HexStr: String;
ModNum: Integer):Integer;var i,n:Integer;
begin
Result:=0;
//初始余数为0 //从左到右依次遍历字符串,进行转换并取余 for i:=1 to Length(HexStr)do
Result:=(Result*16+StrToInt('$'+HexStr)) mod ModNum;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(IntToStr(HexStrMod('7318efc576d8c24b47540d5acfd58e5a',1600)));
end;
 
先轉為相同進制再計算,比如都是十進制數,最後再轉為十六進制
 
后退
顶部