我正在计算一些数字(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/