Преобразование целочисленного значения в биты и сохранение его в массиве символов? - PullRequest
3 голосов
/ 06 марта 2010

Я проектирую надежную передачу данных по UDP, где в буфере данных UDP, который является символьным массивом, и в моих первых 2 байтах я должен поместить биты, такие как 00010000 .... и так далее, и я хочу знать, как этого добиться. Пожалуйста, дайте мне знать, если вам нужна информация, заранее спасибо за вашу помощь, я действительно ценю это

Ответы [ 3 ]

1 голос
/ 06 марта 2010

Вы спрашиваете: «Как преобразовать int-поток в байтовую строку?»

Тогда вы можете попробовать это:

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 голос
/ 06 марта 2010

написать функцию преобразования чисел в строку (массив символов) шаги: 1. разделите целое число на 2 и сохраните значение модуля в массиве символов. 2. вычтите значение отношения с целым числом и сохраните результат в том же самом числе 3. Продолжайте выполнять шаги 1 и 2, пока целое значение не станет равным нулю.

Надеюсь, что это будет простая программа конвертации

0 голосов
/ 06 марта 2010

или используйте более общую функцию для записи одного бита в буфер (массив символов) `

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);;
        }
    }
}

`

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...