我如何将整数转换为存储在字符阵列中的十六进制字节
How can I convert an integer to a hex byte stored in a char array?
我目前正在努力存储一个整数,该整数适合一个十六进制字节,作为角色数组中的十六进制值。例如,我的输入将是:
int i = 28;
,输出将是:
char hex[1] = {'x1C'};
最简单的方法是什么?
char hex[1] = {i};
就是这样。
避免警告有关缩小转换的警告,您也可以施放到char
。
没有"十六进制字节"之类的东西;只有一个字节。当您将其写入源代码中时,它只是"十六进制"。像其他所有值一样,它不会以十六进制或十进制的计算机存储在您的计算机上,而是以二进制。
所以,基础是无关紧要的。您已经有了价值。只需将其放在数组中即可。
这种方式使用std::stringstream
将整数转换为字符串及其特殊操纵器来设置基础。例如这样:
std::stringstream sstream;
sstream << std::hex << my_integer;
std::string result = sstream.str();
或
Use <iomanip>'s std::hex.
如果打印,只需将其发送到std::cout
,如果不是,请使用std::stringstream
std::stringstream stream;
stream << std::hex << your_int;
std::string result( stream.str() );
You can prepend the first << with << "0x"
或您想要的任何东西。
其他感兴趣的manips是std::oct (octal)
和std::dec
(返回十进制(。
您可能会遇到的一个问题是,这会产生代表它所需的数字的确切数量。您可以使用setFill并将其设置为解决问题:
stream << std::setfill ('0') << std::setw(sizeof(your_type)*2)
<< std::hex << your_int;
So finally, I'd suggest such a function:
template< typename T >
std::string int_to_hex( T i )
{
std::stringstream stream;
stream << "0x"
<< std::setfill ('0') << std::setw(sizeof(T)*2)
<< std::hex << i;
return stream.str();
}
相关文章:
- 如何打印一个字符阵列和其中的特定字符
- 比strncpy更好地复制字符阵列的部分方法
- 在字符阵列C 中存储整数值
- C 程序仅在字符阵列获得“ 1000!”的输入时才在DELETE上崩溃
- 将动态阵列中的字符与char进行比较
- 界面设计:超载功能的安全性采用字符串和字符阵列
- 可以使用工会将字符阵列转换为浮动
- 将字符串阵列中的字符转换为浮点
- 我如何将整数转换为存储在字符阵列中的十六进制字节
- 访问字符阵列中不可用的内存位置(超出范围值)
- 需要将单词的文本文件存储到C 中的字符阵列中
- 恒定字符阵列的获取字符串长度函数(strlen)不是恒定表达式
- MBED RTOS将Float转换为字符串/字符阵列
- 从指针打印动态int阵列中获取怪异的字符
- 如何将整数存储在字符阵列中
- 全球字符阵列(2D)
- 如何将一个数字(大于8个字节)从字符阵列转换为其ASCII表示
- 替换字符阵列C 中的字符
- 字符阵列未正确初始化
- 向字符阵列宣布指针