我想知道我是否可以帮助将整数转换为十六进制字符串,每个字节之间有一个空格,如此 -
int val = -2147483648;
char hexval[32];
sprintf(hexval, "%x", val)
Output = 80000000
我怎么能在每个字节之间添加间隔,所以我会有一个字符串 - > 80 00 00 00
是否有更简单的方法,然后malloc内存和移动指针?
谢谢!
答案 0 :(得分:3)
一个简单的功能:
/**
* 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: %d\n", val);
printf("Result string: %s\n", hexval);
return 0;
}
整数值:-2147483648
结果字符串:80 00 00 00
答案 1 :(得分:0)
作为替代方案,您可以考虑使用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;