[英]Looking to store an int in a char array via its equivalent ASCII value in C
我正在計算一些數字(在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#算法。
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.