2011-08-08 7 views
1

iOSのバッファから整数を取得するのが難しいです。バッファからiOSの整数に大きな整数を読み取るにはどうすればよいですか?

文字列を読み取るために、私が使用しています:

output = [[NSString alloc] initWithBytes:buffer lenght:len encoding:NSASCIIStringEncoding]; 

しかし、整数の等価initWithBytesがあるように思えませんが。事前に

おかげで、バッファは整数値に直接キャストすることができますので、ある

デイブ

答えて

1

int original = 0xBADF00D; 
void *buffer = &original; 

//Cast the void* as an int* and then dereference the value 
int intFromBuffer = *(int*)buffer; 

NSLog(@"0x%X 0x%X", original, intFromBuffer); 

出力:

0xBADF00D 0xBADF00D

+0

こんにちはジョー、そのためにありがとう!私はこれが非常に大きい数のために働くと仮定していますか? – user867358

+0

Belay - ちょうど10億を16進数に変換してintFromBufferを見て、うまくいきました! – user867358

+0

はい、非常に大きな数値では動作しますが、バッファの内部に正しい整数サイズが使用されていることを確認してください。バッファが32ビットの符号なし整数を指す場合は、32ビットの符号なし整数を使用します.64ビットの数値も同じです。これは、ガベージ・ナンバーや、アクセスできない読書のメモリが悪化しないようにするために重要です。 – Joe

関連する問題