我正在計算一些數字(介於0和255之間),我想要將它們存儲在C中的char
數組使用它們的ASCII等效。尋找存儲在字符數組通過其等效的ASCII值在C
有沒有這樣做的好方法?
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
;然而,它似乎只是發回塊數據,所以我猜這是行不通的。
任何想法將不勝感激。
編輯以提供更多的信息:
我在一個字節數組讀,把它保存到一個字符數組,然後試圖對它進行一些雙線性插值,發送修改後的版本回來。下面的代碼顯示了大部分過程。
當我說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#算法。
is modified_Frame a char *? – elrobe 2015-03-03 00:01:21
我很難相信第一個方程總是會生成0到255之間的數字。但是如果有,並且如果'modified_Frame'是一個'unsigned char'的數組,那麼'modified_Frame [k] =(unsigned char)b; '應該工作。 – user3386109 2015-03-03 00:01:36
演員陣容多餘 – 2015-03-03 00:02:56