首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将有符号的Int转换为带空格的十六进制字符串

将有符号的Int转换为带空格的十六进制字符串
EN

Stack Overflow用户
提问于 2014-12-12 04:58:19
回答 2查看 754关注 0票数 0

我想知道能不能帮我把一个整数转换成一个十六进制字符串,每一个字节之间都有一个空格,就像这样-

代码语言:javascript
复制
int val = -2147483648;
char hexval[32];

sprintf(hexval, "%x", val)

Output = 80000000 

如何在每个字节之间添加空格,以便有一个类似于-> 80000000的字符串

是否有更简单的方法来代替内存和移动指针呢?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-12 05:06:12

一个简单的功能:

代码语言:javascript
复制
/**
 * 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);
}

示例

代码语言:javascript
复制
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

票数 3
EN

Stack Overflow用户

发布于 2014-12-12 05:29:55

作为一种选择,您可以考虑使用std::hex。示例:

代码语言:javascript
复制
#include <iostream>

int main() {
    int n=255;
    std::cout << std::hex << n << std::endl;
    return 0;
}

更新:

不依赖于打印内容的更灵活的实现可以是

代码语言:javascript
复制
void gethex(int n, std::ostream &o) {
    o << std::hex << n;
}

然后

代码语言:javascript
复制
std::ostringstream ss;
gethex(myNumber, ss);
std::cout << "Hex number: " << ss.str() << std::endl;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27437131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档