- 论坛徽章:
- 0
|
回复 #1 titansword2000 的帖子
- #include <stdio.h>
- void catbit( unsigned char *data, int *array, int n_array, int n_bits )
- {
- int i_array, i_bits, bits32;
- i_array = 0;
- for( ;; )
- {
- i_bits = n_bits;
- bits32 = array[ i_array ];
- while( i_bits-- )
- {
- *data++ = bits32 & ( 1 << i_bits ) ? '1' : '0';
- }
- if( ++i_array == n_array )
- {
- break;
- }
- // comment next line for release
- *data++ = ',';
- }
- *data = '\0';
- }
- int main( int argc, char *argv[] )
- {
- int array[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
- unsigned char data[ sizeof(array) * 8 + 7 + 1 ]; // array bits + 7*, + \0
- catbit( data, array, 8, 32 );
- printf( "cat lower 32 bits:\n[%s]\n", data );
- catbit( data, array, 8, 16 );
- printf( "cat lower 16 bits:\n[%s]\n", data );
- catbit( data, array, 8, 8 );
- printf( "cat lower 8 bits:\n[%s]\n", data );
- catbit( data, array, 8, 0 );
- printf( "cat lower 0 bits:\n[%s]\n", data );
- return 0;
- }
- gcc catbit.c -o catbit
- ./catbit
- cat lower 32 bits:
- [00000000000000000000000000000001,00000000000000000000000000000010,00000000000000000000000000000011,00000000000000000000000000000100,00000000000000000000000000000101,00000000000000000000000000000110,00000000000000000000000000000111,00000000000000000000000000001000]
- cat lower 16 bits:
- [0000000000000001,0000000000000010,0000000000000011,0000000000000100,0000000000000101,0000000000000110,0000000000000111,0000000000001000]
- cat lower 8 bits:
- [00000001,00000010,00000011,00000100,00000101,00000110,00000111,00001000]
- cat lower 0 bits:
- [,,,,,,,]
复制代码
如果你要的不是这种格式, 是不是要实现二进制数据的抽取与拼接?
将:
[00000000000000000000000000000001,
00000000000000000000000000000010,
00000000000000000000000000000011,
00000000000000000000000000000100,
00000000000000000000000000000101,
00000000000000000000000000000110,
00000000000000000000000000000111,
00000000000000000000000000001000]
抽取低8位, 变为:
[00000001,00000010,00000011,00000100,00000101,00000110,00000111,00001000]
全部是二进制数据, 而不是要字符串对吗?
[ 本帖最后由 guoruimin 于 2008-5-6 09:53 编辑 ] |
|