gpt4 book ai didi

c++ - 如何从 uint32_t 打印十六进制?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:18:49 27 4
gpt4 key购买 nike

我一直在处理的代码要求我以十六进制打印类型为 uint32_t 的变量,填充为 0,最小长度为 8。到目前为止,我一直在使用该代码来执行此操作是:

printf("%08lx\n",read_word(address));

其中 read_word 返回类型 uint32_t。我用过jx,llx等格式都没有用,请问有正确的格式可以用吗?

编辑:

我发现问题出在我传递的内容上。函数 read_word 从 uint32_t vector 返回一个值。似乎这是导致十六进制问题的问题。这是按引用/值传递的问题吗?如何解决?

读字函数:

uint32_t memory::read_word (uint32_t address) {
if(address>(maxWord)){
return 0;
}

return mem[address];

}

内存减速:

std::vector<uint32_t> mem=decltype(mem)(1024,0);

最佳答案

要在 C++ 中执行此操作,您需要滥用填充和宽度操纵器:

#include <iostream>
#include <iomanip>
#include <cstdint>

int main()
{
uint32_t myInt = 123456;
std::cout << std::setfill('0') << std::setw(8) << std::hex << myInt << '\n';
}

输出

0001e240

对于 C,它变得有点迟钝。你使用 inttypes.h

#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>


int main()
{
uint32_t myInt = 123456;
printf("%08" PRIx32 "\n", myInt);
return 0;
}

输出

0001e240

请注意,在 C 中,inttypes.h 中的常量与语言字符串连接功能一起使用,以形成所需的格式说明符。您只需提供零填充和最小长度作为序言。

关于c++ - 如何从 uint32_t 打印十六进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43028865/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com