Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将十六进制转换为字符串?C++;_C++_Arrays_String_Hex - Fatal编程技术网

C++ 如何将十六进制转换为字符串?C++;

C++ 如何将十六进制转换为字符串?C++;,c++,arrays,string,hex,C++,Arrays,String,Hex,我有一个十六进制数组,我需要把它转换成字符串 我的阵列: // declaration unsigned char HEX_bufferMessage[12]; // initialize HEX_bufferMessage[0] = 0xF0; HEX_bufferMessage[1] = 0x15; HEX_bufferMessage[2] = 0x31; HEX_bufferMessage[3] = 0x02; HEX_bufferMessage[

我有一个十六进制数组,我需要把它转换成字符串

我的阵列:

// declaration
unsigned char HEX_bufferMessage[12];

// initialize
    HEX_bufferMessage[0] = 0xF0;
    HEX_bufferMessage[1] = 0x15;
    HEX_bufferMessage[2] = 0x31;
    HEX_bufferMessage[3] = 0x02;
    HEX_bufferMessage[4] = 0x03;
    HEX_bufferMessage[5] = 0x00;
    HEX_bufferMessage[6] = 0x00;
    HEX_bufferMessage[7] = 0xD1;
    HEX_bufferMessage[8] = 0xD1;
    HEX_bufferMessage[9] = 0x00;
    HEX_bufferMessage[10] = 0x00;
    HEX_bufferMessage[11] = 0xF7;
我只有十六进制格式的这些信息,我需要把它们转换成字符串。有人知道我怎么做吗

谢谢

使用:

用于(尺寸i=0;i使用:

(大小i=0;i如何

怎么样

像这样的

const char *hex = "0123456789ABCDEF";

unsigned char x = 0xF8;

std::cout << "0x" << hex[x >> 4 & 0xF] << hex[x & 0xF] << std::endl;
const char*hex=“0123456789ABCDEF”;
无符号字符x=0xF8;
std::cout 4&0xF]类似的东西

const char *hex = "0123456789ABCDEF";

unsigned char x = 0xF8;

std::cout << "0x" << hex[x >> 4 & 0xF] << hex[x & 0xF] << std::endl;
const char*hex=“0123456789ABCDEF”;
无符号字符x=0xF8;
std::cout 4&0xF]
std::bitset foo(十六进制缓冲消息[0]);
std::string s=foo.to_string();
std::位集foo(十六进制缓冲消息[0]);
std::string s=foo.to_string();

char hex_string[12*2+1];/*其中12-是十六进制值的数目,2-是每个十六进制2个字符,1是最后的零字符*/
对于(int i=0;i
char hex_string[12*2+1];/*其中12-是十六进制值的数目,2-是每个十六进制2个字符,1是最后的零字符*/

对于(int i=0;i迟到,但由于使用
std::to_string()
的所有答案都无法将十六进制值作为十六进制值输出,因此我建议您将它们发送到流,您可以通过
std::hex
格式化输出:

std::cout << "0x" << std::hex << HEX_bufferMessage[0] << std::endl;

std::cout迟到了,但是由于使用
std::to_string()
的所有答案都无法将十六进制值作为十六进制值输出,我建议您将它们发送到流,您可以通过
std::hex
格式化输出:

std::cout << "0x" << std::hex << HEX_bufferMessage[0] << std::endl;

std::cout再次强调,
std::stringstream
。请注意,
HEX\u bufferMessage
不是“十六进制数组”,它是一个无符号字符数组。十六进制只是一种符号,在外部表示数字时使用。在内存中,数字以二进制形式存储。您可以执行
HEX\u bufferMessage[0]=240;
等,并在内存中具有完全相同的结果。再次强调,
std::stringstream
。请注意,
HEX_bufferMessage
不是“一个十六进制数组”,它是一个无符号字符数组。
。十六进制只是一种符号,在外部表示数字时使用。在内存中,数字存储为二进制。您可以执行
十六进制缓冲消息[0]=240;
等操作,并在内存中得到完全相同的结果。
char hex_string[12*2+1]; /* where 12 - is the number of you hex values, 2 - is 2 chars per each hex, and 1 is the final zero character */

for(int i=0;i<12;++i) {
  sprintf(hex_string+i*2,"%x", HEX_bufferMessage[i]);
}
std::cout << "0x" << std::hex << HEX_bufferMessage[0] << std::endl;
std::string to_hex_string( const unsigned int i ) {
    std::stringstream s;
    s << "0x" << std::hex << i;
    return s.str();
}
// ...
return (static_cast<std::stringstream const&>(std::stringstream() << "0x" << std::hex << i)).str();