改大了空间
一样是那个结果
ch[i]的数据都是O....

解决方案 »

  1.   

    有可能是你的数据没有加上48,看一下ASCII码表,对照一下
      

  2.   

    这个程序主要是给8位灰度图象建立一个伽马变换表
    而且也不可能每个数据元素都是0;
    调试时自动窗口中显示ch的值为 0x0001f960<错误的指针>;
    其每个元素的值都是 CX0030:错误:无法计算表达式的值程序运行过程也没报错
      

  3.   

    ch[i]=(BYTE) (f1*256-0.5F);//反归一化
    //double 4个字节,你强制截断为一个字节,信息丢失。
      

  4.   

    f1*256-0.5F 的值不会超过255;
    我先将其转换成整型变量
    再转成BYTE 变量赋给ch[i]
    ch[i]结果依然为0;
    调试的时候也是以上情况,而且f1 的值也显示是无法计算表达式的值
      

  5.   

    这样,你把f1的首地址赋值给ch,看看ch[0]  ----  ch[3]的值
      

  6.   

    f1是double 型浮点数
    将首地址直接赋值给char型指针会报错。
      

  7.   

    #include <stdio.h>
    #include <math.h>typedef unsigned char BYTE;void main()
    {
    double f1;
    BYTE ch[256]; for(int i = 0; i < 256; i++)
    {
    f1 = (i + 0.5F) / 256 ;//归一化
    f1 = pow(f1, 2.22) ;//求指数函数
    ch[i] = (BYTE) (f1 * 256 - 0.5F) ;//反归一化
    printf("%d\n", ch[i]);
    }
    }闲着无聊帮你测了一下,除了前几个是0,后面的都有数值
    所以,上面代码没有问题
      

  8.   

    还是不行
    主要问题是ch[i]的值总为0;
    我用了函数floor()来将f1取整
    在赋给ch[i],结果还是0;