[英]How can to convert hexadecimal to string? C++
I have an array of hexadecimals and I need to convert it to string. 我有一个十六进制数组,我需要将其转换为字符串。
my array: 我的数组:
// 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 only have these informations in hexadecimal format, I need to convert them to string. 我只有十六进制格式的这些信息,我需要将它们转换为字符串。 Anyone know how I can do it??
有人知道我该怎么做吗?
Thank you!! 谢谢!!
Late to the party, but since all the answers using std::to_string()
fail to output the hex values as hex values, I suggest you send them to a stream, where you can format your output via std::hex
: 聚会晚了,但是由于所有使用
std::to_string()
的答案都无法将十六进制值作为十六进制值输出,因此我建议您将它们发送到流中,在此处可以通过std::hex
格式化输出:
std::cout << "0x" << std::hex << HEX_bufferMessage[0] << std::endl;
or, if you want to use it in a string: 或者,如果您想在字符串中使用它:
std::string to_hex_string( const unsigned int i ) {
std::stringstream s;
s << "0x" << std::hex << i;
return s.str();
}
or even in a single line: 甚至单行:
// ...
return (static_cast<std::stringstream const&>(std::stringstream() << "0x" << std::hex << i)).str();
Use : std::to_string
使用:
std::to_string
for (size_t i =0 ; i<10; ++i)
{
std::string s { std::to_string(HEX_bufferMessage[i]) }; //ith element
std::cout << s; //concatenate all s as per need
}
std::bitset<16> foo(HEX_bufferMessage[0]);
std::string s = foo.to_string();
http://en.cppreference.com/w/cpp/utility/bitset/to_string http://en.cppreference.com/w/cpp/utility/bitset/to_string
How about std::to_string
? std::to_string
呢?
Like 喜欢
std::string s;
for (auto const& v : HEX_bufferMessage)
s += std::to_string(v);
something like this? 这样的东西?
const char *hex = "0123456789ABCDEF";
unsigned char x = 0xF8;
std::cout << "0x" << hex[x >> 4 & 0xF] << hex[x & 0xF] << std::endl;
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]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.