希望通过C中的等效ASCII值将int存储在char数组中

时间:2015-03-02 23:54:39

标签: c arrays char ascii

我正在计算一些数字(在0到255之间),我想用C语言将它们存储在C中的char数组中。

这样做有什么好办法吗?

int b = (int)(*pixelA.pixel_b * (1-w) * (1-h) +
              *pixelB.pixel_b * (w) * (1-h) +
              *pixelC.pixel_b * (1-w) * (h) +
              *pixelD.pixel_b * (w*h));

modified_Frame[k] = (char)b;

这就是我的目标,如果(char)意味着它取了b的值,并将ASCII等价物写入数组。

我尝试使用两个指针(希望C会自动执行),如下所示:

int *pb = &b;   
modified_Frame[k] = *pb;

使用b的字符而不是int;然而,它似乎只是发回块数据,所以我猜它不起作用,我打算如何。

非常感谢任何想法。

编辑以提供更多信息:

我正在读取一个字节数组,将其保存到char数组,然后尝试对其执行一些双线性插值,然后再发送修改后的版本。下面的代码显示了大部分过程。

当我说ASCII等价时,这是因为它们是字节,所以它可以在0-255之间变化,而且似乎是从一点点玩起来的ASCII等价物(例如用'z'填充数组导致了发送的价值为122。

n = read(conn_desc, &framebuff[ntotal], incomingframesize-ntotal);

char modified_Frame[((incomingframesize*4)-(54*3))];

for (i=0;i<newYSize;i++)
{
    y = (int)(y_ratio * i);
    for (j=0;j<newXSize;j++)
    {
        x = (int)(x_ratio * j);
        w = (x_ratio * j) - x;
        h = (y_ratio * i) - y;

        pixelA.pixel_b = &framebuff[GET_PIXEL_B(x,y)];
        pixelA.pixel_g = &framebuff[GET_PIXEL_G(x,y)];
        pixelA.pixel_r = &framebuff[GET_PIXEL_R(x,y)];

        pixelB.pixel_b = &framebuff[GET_PIXEL_B(x+1,y)];
        pixelB.pixel_g = &framebuff[GET_PIXEL_G(x+1,y)];
        pixelB.pixel_r = &framebuff[GET_PIXEL_R(x+1,y)];

        pixelC.pixel_b = &framebuff[GET_PIXEL_B(x,y+1)];
        pixelC.pixel_g = &framebuff[GET_PIXEL_G(x,y+1)];
        pixelC.pixel_r = &framebuff[GET_PIXEL_R(x,y+1)];

        pixelD.pixel_b = &framebuff[GET_PIXEL_B(x+1,y+1)];
        pixelD.pixel_g = &framebuff[GET_PIXEL_G(x+1,y+1)];
        pixelD.pixel_r = &framebuff[GET_PIXEL_R(x+1,y+1)];


        int r = (int)(*pixelA.pixel_r * (1-w) * (1-h) + *pixelB.pixel_r * (w) * (1-h) + *pixelC.pixel_r * (1-w) * (h) + *pixelD.pixel_r * (w*h));
        int g = (int)(*pixelA.pixel_g * (1-w) * (1-h) + *pixelB.pixel_g * (w) * (1-h) + *pixelC.pixel_g * (1-w) * (h) + *pixelD.pixel_g * (w*h));
        int b = (int)(*pixelA.pixel_b * (1-w) * (1-h) + *pixelB.pixel_b * (w) * (1-h) + *pixelC.pixel_b * (1-w) * (h) + *pixelD.pixel_b * (w*h));

        modified_Frame[k] = b;
        k++;
        modified_Frame[k] = g;
        k++;
        modified_Frame[k] = r;
        k++;
    }
}

这是尝试'翻译'我曾经工作过的C#算法。

1 个答案:

答案 0 :(得分:0)

perhaps the following would work for you.

int main()
{
    int myint = 25;  //could actually be any int value 0...255

    char mychar;

    mychar = (char)(myint&0xFF);

    return (int)mychar;
}