RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1599239
Accepted
Александр
Александр
Asked:2024-11-09 03:17:17 +0000 UTC2024-11-09 03:17:17 +0000 UTC 2024-11-09 03:17:17 +0000 UTC

将字节反转为十六进制

  • 772

请告诉我如何在 Delphi 中扩展十六进制数字 我们有一个十六进制数字,例如:2300FFC0 我们需要扩展它:C0FF0023。

delphi
  • 3 3 个回答
  • 30 Views

3 个回答

  • Voted
  1. Best Answer
    MBo
    2024-11-09T11:13:52Z2024-11-09T11:13:52Z

    几种可能的方法:

    procedure TForm2.Button20Click(Sender: TObject);
    var
      a, b, c, d, e: DWord;
    
    function ReverseD0(i: DWord): DWord;  //32 bit
    asm
      bswap eax
    end;
    
    function ReverseD1(i: DWord): DWord;
    begin
      Result := ((i and $FF) shl 24) or
                (((i shr 8) and $FF) shl 16) or
                (((i shr 16) and $FF) shl 8) or
                (((i shr 24) and $FF));
    end;
    
    function ReverseD2(i: DWord): DWord;
    var
      c, d: LongRec;
    begin
      c := LongRec(i);
      d := Longrec(Result);
      d.Bytes[0] := c.Bytes[3];
      d.Bytes[1] := c.Bytes[2];
      d.Bytes[2] := c.Bytes[1];
      d.Bytes[3] := c.Bytes[0];
    end;
    
    function ReverseD3(i: DWord): DWord;
    var
      c: Integer;
    begin
      for c := 0 to 3 do
         PByteArray(@Result)[c] := PByteArray(@i)[3-c];
    end;
    
    begin
      a := $AABBCCDD;
      b := ReverseD0(a);
      c := ReverseD1(a);
      d := ReverseD2(a);
      e := ReverseD3(a);
      Memo1.Lines.Add(Format('%x %x %x %x %x', [a, b, c, d, e]));
    end;
    
    >>>  AABBCCDD DDCCBBAA DDCCBBAA DDCCBBAA DDCCBBAA
    

    “十六进制”是人类表示数字的方式,我假设您只有一个数字,而不是字符串。

    • 4
  2. Oopss
    2024-11-09T17:02:18Z2024-11-09T17:02:18Z
    program Reverse;
    
    var
      hexValue, x, r: Int64;
    //***********************************************************************  
     //Не знаю как с этим компилятором вывести hex 
     //для вывода эта функция
    function IntToHex(Value: Int64): string;
    var pos:integer;
        HexChars:string;
        Result:string;
    begin 
    Result:='';
    while Value>0 do
      begin
       HexChars := '0123456789ABCDEF';
       pos:=Value mod $10;
       Result := HexChars[pos + 1] + Result;
       Value:=Value div $10;
      end;
      IntToHex:= Result;
    end;
    //************************************************************************
    // программа  реверс
    begin
      hexValue := $2300FFC0;// Оставим исходное число для вывода, по желанию
      x:= hexValue;
      r := 0;
      while x > 0 do 
      begin
        r := r * $100 + (x mod $100); // остаток от деления прибавляем к перевертышу 
        x := x div $100; 
      end;
      writeln('hexValue  ',IntToHex(hexValue));
      writeln('Reverse   ',IntToHex(r));
    
    
    end.
    

    Output:
    
    hexValue  2300FFC0
    Reverse   C0FF0023
    

    https://onecompiler.com/pascal/42xjbtcsm

    • 0
  3. avp
    2024-11-09T06:13:18Z2024-11-09T06:13:18Z

    也许 C 程序会帮助你
    (uint32_t这是一个 32 位大小的无符号整数类型)

    #include <stdio.h>
    #include <stdlib.h>
    #include <stdint.h>
    
    int
    main (int ac, char *av[])
    {
      uint32_t v = av[1] ? atoi(av[1]) : 0x2300FFC0;
    
      printf("source: 0x%08x\n", v);
    
      uint32_t r = ((v & 0xff) << 24) |
        (((v >> 8) & 0xff) << 16) |
        (((v >> 16) & 0xff) << 8) |
        (((v >> 24) & 0xff));
    
      printf("result: 0x%08x\n", r);
    
      return puts("End") == EOF;
    }
    
    • -2

相关问题

  • 查找数值

  • 如何在 DBGrid 中选择 DBDateTimeEditEh 编辑记录字段?

  • 该程序无法在 RAD STUDIO 10.3 中编译或运行

  • 我们需要一个可视化的 Delphi 组件,类似于在旧版本的 Windows 中显示磁盘碎片整理

  • 按钮代码 OnClick 通过另一个按钮

  • 这种代码排序方法是如何工作的?

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5