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

标签 c arrays char ascii

我正在计算一些数字(0 到 255 之间),并且希望使用其 ASCII 等效项将它们存储在 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;然而它似乎只是发回 block 数据,所以我猜它不能按我的预期工作。

任何想法将不胜感激。

编辑以提供更多信息:

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

当我说 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# 算法的一次尝试。

最佳答案

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;
}

关于c - 希望通过 C 中等效的 ASCII 值将 int 存储在 char 数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28821640/

相关文章:

c - 在 C 结构体中分配 char

c - 在程序中出现不兼容的整数到指针的转换错误。不确定这是如何/为什么会发生,但正在寻找解释

c - Micriμm μC/OS-III RTOS 中的分配和释放

c - 混合编程 : Calling FORTRAN from C

c - 在一个语句中输出多个 post 和 pre increments

python - numpy 2d 区域的快速随机到唯一重新标记(无循环)

python - 拆分数组中的字符串

c - 希腊字符串的长度大于应有的长度

c - 关于 int 未定义增量的警告

javascript - 在 JavaScript 中对除一个元素之外的数组进行排序