0

CFMutableBitVector で表される画像があるとします。つまり、すべての 0 ビットはオフ ピクセルを表し、すべての 1 ビットはオン ピクセルを表します。

この CFMutableBitVector を、オンビットがオールオンビット整数を表し、オフビットがオールオフビット整数を表す低レベルの int 配列に簡単かつ迅速に変換する方法はありますか?

CFMutableBitVector[0,0,0,1,1,0,1,0];

翻訳すると:

int[8] =
[
    00000000000000000000000000000000,
    00000000000000000000000000000000,
    00000000000000000000000000000000,
    11111111111111111111111111111111,
    11111111111111111111111111111111,
    00000000000000000000000000000000,
    11111111111111111111111111111111,
    00000000000000000000000000000000,
];

さて、これはビデオ ストリームからの画像であるため、これは非常に迅速に行う必要があります。Objective-C でこのような変換を行う最速の方法は何ですか?

4

1 に答える 1

2

これがサンプル変換です...

  u_int32_t sample = UINT32_MAX;
  CFBitVectorRef bv = CFBitVectorCreate( NULL, ( const u_int8_t * )&sample, sizeof( u_int32_t ) * 8 );

  CFIndex bitCount = CFBitVectorGetCount( bv );
  u_int32_t *a = malloc( bitCount * sizeof( u_int32_t ) );
  for ( CFIndex i = 0 ; i < bitCount ; i++ ) {
    a[i] = CFBitVectorGetBitAtIndex( bv, i ) * UINT32_MAX;
  }

  for ( int i = 0 ; i < bitCount ; i++ ) {
    NSLog( @"Index: %d Number: %u", i, a[i] );
  }
  free( a );
于 2012-08-31T08:56:41.550 に答える