C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 无符号长十六进制表示大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
#include <stdio.h>
#include <String.h>

int main(void) {
    char buf[256] = {};
    unsigned long i=13835058055298940928;
    snprintf(buf,1024,"%lx",i); /* Line 7 */
    printf("%s\n",buf);
    return 0;
}

在第7行中,如果我使用%lux,则snprintf不会进行任何转换,只打印0x13835058055298940928x,而如果我只使用%lx,则会打印预期的十六进制转换.

如何用十六进制表示无符号长整数

解决方法

格式“%lux”被视为“%lu”(无符号长整数,小数),后跟字母x.

“%x”格式需要一个无符号类型的参数;没有(直接)机制以十六进制格式打印有符号整数.

以十六进制打印无符号长值的格式为“%lx”. (x是十六进制,d是带符号的十进制,u是无符号十进制;其中任何一个都可以用l来限定.)

请注意,值13835058055298940928至少需要64位无符号类型才能存储它而不会溢出. unsigned long类型至少为32位;在某些系统上它是64位,但绝不是全部.如果您希望代码是可移植的,则应使用unsigned long long类型而不是unsigned long类型.以十六进制打印无符号long long值的格式为“%llx”.

为清楚起见,我通常在十六进制输出前面加上0x,因此读者很明显它是一个十六进制数:

printf("0x%llx\n",some_unsigned_long_long_value);

(您可以使用%#llx获得相同的结果,但我发现写出0x比记住#flag的含义更容易.)

大佬总结

以上是大佬教程为你收集整理的c – 无符号长十六进制表示全部内容,希望文章能够帮你解决c – 无符号长十六进制表示所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。