1

目的の c でバイト配列を作成したいのですが、Java の ByteArrayOutputStream と DataOutputStream の同等のコードを見つけることができません。例えば..

ByteArrayOutputStream bos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(bos);
dos.writeLong(counter); //counter is a long data type for eg 1165620611
dos.flush();
byte[] data = bos.toByteArray();
return data;

このコードは実際には 8 バイトの配列を返します...これが Java の出力です [0,0,0,0,69,121,-11,-125]

これは私が目的のcで正確に欲しいものです..

4

3 に答える 3

6
// #1 long to char array
long l = 1165620611;
char bytes[sizeof(long)];
memcpy(bytes,&l,sizeof(l));

// #2 char array to nsdata
int size = sizeof(bytes)/sizeof(char);
NSData *data = [NSData dataWithBytes:bytes length:size];

// #3 nsdata to char array
char buffer[size];
[data getBytes:buffer length:size];

// #4 prints char array: 0 0 0 0 69 121 -11 -125
while (0<size--) {
    NSLog(@"%d",buffer[size]);
}

NSData はまったく必要ありません。手順 2 と 3 は省略できます。

于 2013-02-03T17:14:15.757 に答える
5

目的でcharbuff[]配列を使用する - c

于 2013-01-14T06:23:45.940 に答える
1

これには、 NSDataクラスとNSMutableDataクラス使用できます。

NSDataとその可変サブクラスNSMutableDataは、データオブジェクト、バイトバッファーのオブジェクト指向ラッパーを提供します。データオブジェクトを使用すると、単純に割り当てられたバッファ(つまり、ポインタが埋め込まれていないデータ)がFoundationオブジェクトの動作を引き継ぐことができます。

NSDataは静的データオブジェクトを作成し、NSMutableDataは動的データオブジェクトを作成します。NSDataとNSMutableDataは通常、データストレージに使用され、データオブジェクトに含まれるデータをアプリケーション間でコピーまたは移動できる分散オブジェクトアプリケーションでも役立ちます。

データのサイズは、約8 ExaBytesの理論上の制限の対象となります(実際には、制限は要因であってはなりません)。

NSDataは、CoreFoundationの対応するCFDataRefと「無料でブリッジ」されています。フリーダイヤルブリッジの詳細については、「フリーダイヤルブリッジ」を参照してください。

于 2013-01-14T06:25:50.027 に答える