将有符号的 Int 转换为带空格的十六进制字符串
Convert a signed Int to a hex string with spaces
我想知道我是否可以得到一些帮助,将整数转换为十六进制字符串,每个字节之间都有一个空格,就像这样-
int val = -2147483648;
char hexval[32];
sprintf(hexval, "%x", val)
Output = 80000000
我如何在每个字节之间添加空格,这样我就会有一个像 -> 80 00 00 00 这样的字符串
有没有比错误分配内存和移动指针更简单的方法?
谢谢!
一个简单的函数:
/**
* hexstr(char *str, int val);
*
* `str` needs to point to a char array with at least 12 elements.
**/
int hexstr(char *str, int val) {
return snprintf(str, 12, "%02hhx %02hhx %02hhx %02hhx", val >> 24, val >> 16, val >> 8, val);
}
例:
int main(void) {
int val = -2147483648;
char hexval[12];
hexstr(hexval, val);
printf("Integer value: %dn", val);
printf("Result string: %sn", hexval);
return 0;
}
整数值:-2147483648
00 00 00
结果字符串:80
作为替代方案,您可以考虑使用 std::hex
.例:
#include <iostream>
int main() {
int n=255;
std::cout << std::hex << n << std::endl;
return 0;
}
更新:
不依赖于打印内容的更灵活的实现可以是
void gethex(int n, std::ostream &o) {
o << std::hex << n;
}
然后
std::ostringstream ss;
gethex(myNumber, ss);
std::cout << "Hex number: " << ss.str() << std::endl;
相关文章:
- 如何在openssl-ecc中获取十六进制格式的私钥
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 通过错误处理,在C++中可靠地获得用户十六进制输入
- 为什么mpfr_printf与十六进制浮点(%a转换说明符)的printf不同
- 在 std::无符号字符的向量处存储 int 的十六进制表示形式
- 指向存储在字符串 c++ 中的十六进制
- 读取文件中所有可能的十六进制 16 字节序列并打印每个序列
- C ++如何使用UTF8十六进制代码打印UTF8符号?
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 如何在C++中将十六进制字符串转换为文本数据
- 使用 sprintf 将十六进制0xAABBCC转换为字符串"AA:BB:CC"
- 绝对编码器十六进制输入
- 为什么C++总是显示十六进制内存地址,而不仅仅是整数?
- C++17 十六进制浮点文字单精度后缀冲突?
- 将有符号的 Int 转换为带空格的十六进制字符串
- 使用十六进制保存输出会增加空格
- 如何在c++中读取以空格分隔的十六进制字节数据