簡體   English   中英

希望通過C中的等效ASCII值將int存儲在char數組中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM