先来个例子。比如 295的16进制码是127对吧。
现在我们要把一个整数的16进制码,反排序。这个16进制占4个字节。(低位在前,高位在后。不足4位就补0)295的16进制码是127 通过上面的条件。得到的结果应该是: 27 01 00 00所以得写个函数来得到。请问怎么实现上面的功能。谢谢大家了。
function itoh(aint : integer) : integer;
begin
  ................
  ....
  result := $27010000(假如aint=295,这就是返回值)
end;

解决方案 »

  1.   

    inttohex
    length
    加8-length个0  从后往前复制????
      

  2.   

    如果当字符来复制的话。
    要做一个程序来转换。比如字符串: "3E" 得到的16进制就要为$3E "2F" 得到的就是$2F哎。死了好多脑细胞。
      

  3.   

    用Windows Sockets API htonl
      

  4.   

    IntToHex是可以的
    灵活运用就OKn:=295;
    s:=IntToHex(n, 8); //s = 00 00 01 27
    s:=Copy(s, 7, 2)+Copy(s, 5, 2)+copy(s, 3, 2)+copy(s,1,2); // s = 27 01 00 00
    n:=StrToInt('$'+s); 搞定啦http://lysoft.7u7.net
      

  5.   

    inttohex     ======127length       =======3copy         (每2位复制)==========2701  length        =======4(2701)加8-length个0(string类型)result:=strtoint('$'+'27010000')
      

  6.   

    IntToHex是可以的
    灵活运用就OKn:=295;
    s:=IntToHex(n, 8); //s = 00 00 01 27
    s:=Copy(s, 7, 2)+Copy(s, 5, 2)+copy(s, 3, 2)+copy(s,1,2); // s = 27 01 00 00
    n:=StrToInt('$'+s); 搞定啦http://lysoft.7u7.net
      

  7.   

    转换16进制后不足4字节,先补零
    然后
    var
     s,s1: string;
    s1 := '';
    s :=转换16进制后的串 
    i := lenghth(s);
    while i > 0 do 
    begin
      s1 := s1 + copy(s, i-1, 2)
      i := i - 2;
    end
    result := s1;
      

  8.   

    呵呵,更简单的:
    s := format( '$%.4x', [htonl(295)] );记得uses winsock;