我想知道能不能帮我把一个整数转换成一个十六进制字符串,每一个字节之间都有一个空格,就像这样-
int val = -2147483648;
char hexval[32];
sprintf(hexval, "%x", val)
Output = 80000000 如何在每个字节之间添加空格,以便有一个类似于-> 80000000的字符串
是否有更简单的方法来代替内存和移动指针呢?
谢谢!
发布于 2014-12-12 05:06:12
一个简单的功能:
/**
* 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 结果字符串:80000000
发布于 2014-12-12 05:29:55
作为一种选择,您可以考虑使用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;https://stackoverflow.com/questions/27437131
复制相似问题