c - 以十进制和浮点格式打印十六进制值

标签 c hex

我正在尝试执行这个简单的代码来以十进制和浮点格式打印十六进制值,但它没有打印任何内容。

谁能帮忙..

#include<stdio.h>
#include<stdlib.h>
int  main()
{
    char content[]={0x24,0x00};
    int i;
    for(i=0;i<2;i++)
    {
        printf("%d",content[i]);
        printf("%.1f",content[i]/10.0);
    }
    printf("%.2f",(100*(unsigned)content[0]+(unsigned)content[1])/1000.0);
}

最佳答案

首先,没有所谓的“十六进制值”。

数值可以是整数或非整数。

  • 对于整数值,有多种可选大小 - 1、2、4 或 8 字节。

  • 对于非整数值,有两种可选大小 - 4 字节(浮点型)或 8 字节( double 型)。

您的“内容”变量是一个包含两个整数的数组,每个整数的大小为 1 个字节。

现在我们已经澄清了这一点,让我们引用手头的实际问题。

一般编码问题:

  1. 在每个打印的末尾添加一个空格或换行符'\n'。

  2. 您必须在函数“main”的末尾返回一个值(您可以只返回 0)。

  3. 在对“printf”的最后两次调用中,将参数转换为“float”,因为默认情况下编译器可能会将其“发送”为“double”,在这种情况下,“printf”会将 8-字节值作为 4 字节值,您很可能会得到不正确的打印输出。

修改后的代码:

#include<stdio.h>
#include<stdlib.h>
int  main()
{
    char content[]={0x24,0x00};
    int i;
    for(i=0;i<2;i++)
    {
        printf("%d\n",content[i]);
        printf("%.1f\n",(float)(content[i]/10.0));
    }
    printf("%.2f\n",(float)((100*(unsigned)content[0]+(unsigned)content[1])/1000.0));
    return 0;
}

话虽如此,我不太确定为什么您根本没有得到任何打印件...

关于c - 以十进制和浮点格式打印十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20971716/

相关文章:

c - (C) 在屏幕上和文件中打印所有 CP850 字符的程序有不同的输出

c - 更新函数内的字符串数组

sql - 将整数转换为十六进制并将十六进制转换为整数

iphone - 在 iPhone 上检测 NSString 中的 Unicode 字符

numbers - 0x00000000 十六进制?

c - 在 c 和正则表达式中使用 flex

c - 制作一个随机节点,第一个节点

c - 读取 READ FILE (txt) 时出错

ios - 将字节命令发送到 Star Micronics SM-S220I 打印机

python - 如何异或等于十六进制字符串?