将INT转换为具有选定格式的char阵列

Converting an int to a char array with a chosen format

本文关键字:格式 定格 char 阵列 INT 转换      更新时间:2023-10-16

我有一个我想转换为char数组的int,但是我希望char数组在十六进制中格式化,并且int的每个字节都完全占据了2个char变量(用零填充)。

要澄清我的意思,我有一个例子:

我希望int 232198(0x38b06)成为" 00038B06"。

我当然可以通过使用此代码来完成此问题:

#include <iostream>
#include <iomanip>
int main()
{
    std::cout << 
    std::hex << 
    std::setw(8) << 
    std::setfill('0') << 
    232198 <<
    std::endl;
    return 0;
}

打印出来:

00038B06

但这仅将其打印到控制台上,正如我之前提到的,要存储一个char数组。

我不在乎代码是否可移植,这只需要用于Windows。

stringstream s对此很有用:

std::stringstream sstr;
sstr << 
    std::hex << 
    std::setw(8) << 
    std::setfill('0') << 
    232198;
std::string str = sstr.str();

现在str包含格式的编号。str.c_str()将为您提供const char*