【问题标题】:C++ convert ULONG_PTR to array of hexadecimal valuesC++ 将 ULONG_PTR 转换为十六进制值数组
【发布时间】:2021-01-29 21:12:24
【问题描述】:

我正在尝试将 ULONG_PTR 变量转换为十六进制值数组,例如以下变量-

ULONG_PTR a = 1406993872

我想把它转换成下面的数组-

unsigned char hexArray[] = {0x53, 0xDD, 0x05, 0xD0}

使用 C++ 最简单的方法是什么?

【问题讨论】:

  • 所有objects in C++都可以看成是一个字节数组(注意反过来不行),所以你可以用reinterpret_cast得到你想要的。
  • @user4581301 我猜你的意思是这样的 - unsigned char hexArray[] = reinterpret_cast(a) 但我收到一个错误 - “使用“{…}”初始化预计聚合对象“
  • 道歉。对于该用例,您不能强制转换。我想说的是hexArray 可能是多余的。大多数你会使用hexArray的地方你可以改用reinterpret_cast<unsigned char*>(a)

标签: c++ type-conversion


【解决方案1】:

一个简单的方法是使用联合:

union myunion {
    ULONG_PTR *a;
    unsigned char hexArray[sizeof(ULONG_PTR)];
};

ahexArray 将共享相同的内存空间,但会按照各自的类型进行处理。

【讨论】:

    猜你喜欢
    • 2011-08-04
    • 2023-03-13
    • 2017-06-17
    • 2017-07-31
    • 2013-07-20
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    相关资源
    最近更新 更多