如何从十六进制字符串中删除前导零?

时间:2011-10-07 14:44:09

标签: delphi

如果我的字符串为'0000FFFF'或'0000F0F0',那么如何将输出分别设为'FFFF'和'F0F0',从中删除非显着的0?

4 个答案:

答案 0 :(得分:5)

此函数将删除前导零:

function StripLeadingZeros(const s: string): string;
var
  i, Len: Integer;
begin
  Len := Length(s);
  for i := 1 to Len do begin
    if s[i]<>'0' then begin
      Result := Copy(s, i, Len);
      exit;
    end;
  end;
  Result := '0';
end;

答案 1 :(得分:1)

Format('%X', [StrToInt('$' + number)])

答案 2 :(得分:0)

function mystrip(Value: string): string; 
var 
  Flag: Boolean; 
  Index: Integer; 
begin 
  Result := ''; Flag := false; 
  for Index := 1 to Length(Value) do 
  begin 
    if not Flag then 
    begin 
      if (Value[Index] <> #48) then 
      begin 
        Flag := true; 
        Result := Result + Value[Index]; 
      end 
    end 
  else 
    Result := Result + Value[Index]; 
  end; 
end; 

答案 3 :(得分:0)

  

这个问题分为两个部分,解决了4个LoC(或5个用   解释变量)。

licensed under GPL

function TrimLeading(const S: string): string;
var
  I: Integer;
begin
  I := 1;
  while (I < Length(S)) and (S[I] = '0') do
    Inc(I);
  Result := Copy(S, I, MaxInt);
end;