c - gmp_printf() - 以十六进制/base16 打印

标签 c hex printf gmp

我正在尝试使用 gmp_printf() 以十六进制打印,但由于某种原因它不起作用/工作得很奇怪。

mpz_t B; //number of bytes
mpz_set_str(B,argv[2],0);
gmp_printf("%Zd",B);

工作正常。

尝试将其更改为:

gmp_printf("%#0xZd",B);

但是使用这个我可以为相同的输入获得不同的输出:

input: 0x397a52dccd55d39823964ae25
output1: 0xa8392f80Zd
output2: 0xa1eca3b0Zd
desired output: 0x397a52dccd55d39823964ae25 

最佳答案

您可能想要gmp_printf("%#Zx\n",B); 。请永远不要发布这样的随机行,只发布完整的程序(使用 #include <gmp.h> 、使用 mpz_init(B) 等)。

关于c - gmp_printf() - 以十六进制/base16 打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36584558/

相关文章:

c - printf 在 C 中给我错误的输出

c - 内存泄漏和可能的 malloc 错误

c - 计算距离平方的最快方法

asp-classic - 带有 Base64 类型十六进制的经典 ASP

c - 以相反的顺序打印双向链表?

c - 如何提高C语言中printf的速度

c - C 中的内存池实现

c - 使用 scanf 解析 hh :mm:ss, 一些输入出现奇怪的错误

c++ - C++ cout不能以正确的格式显示十六进制字节

c++ - 是否有一种算法可以快速将大量十六进制字符串转换为字节流?汇编/C/C++