将整数值转换为位并将其存储到char数组中?

时间:2010-03-06 03:53:55

标签: c

我正在通过UDP设计可靠的数据传输,其中在UDP数据缓冲区中是一个字符数组,在我的前2个字节中,我必须放置像00010000 ....等等,我想要知道如何实现这一目标。如果您需要任何信息,请告诉我,提前感谢您的帮助,我真的很感激

3 个答案:

答案 0 :(得分:1)

您是否在问“如何将[u] int-stream转换为字节串?”

然后你可以试试这个:

1. Pick next integer x = uint[i]
2. Get four bytes out of it as
 b4 = x & 0xFF000000
 b3 = x & 0x00FF0000
 b2 = x & 0x0000FF00
 b1 = x & 0x000000FF
3. Write the four bytes into the stream s, e.g.
 s << b4 << b3 << b2 << b1;
4. i += 1
5. Go to 1

答案 1 :(得分:1)

编写一个将数字转换为字符串的函数(字符数组) 脚步 :       1.将整数除以2并将模数值存储在字符数组中。       2.使用整数减去商值,并将结果存储在同一个整数中       3.继续执行步骤1和2,直到整数值变为零。

希望这是简单的转换程序

答案 2 :(得分:0)

或使用更通用的函数将单个位写入缓冲区(char数组) `

void setBitAt( char* buf, int bufByteSize, int bitPosition, bool value )
{
    if(bitPosition < sizeof(char)*8*bufByteSize)
    {
        int byteOffset= bitPosition/8;
        int bitOffset = bitPosition - byteOffset*8;

        if(value == true)
        {
             buf[byteOffset] |=  (1 << bitOffset);
        }
        else
        {
             buf[byteOffset] &= ~(1 << bitOffset);;
        }
    }
}

`