0

「initWithBytes」NSStringをunsignedchar*に変換するにはどうすればよいですか?

NSStringが生成した方法は次のとおりです

NSString *byte = [[[NSString alloc] initWithBytes:inputbytes length:inputlength encoding:NSASCIIStringEncoding] autorelease];

ビットレベルで変更してはならないバイトデータが含まれています(base64変換の入力になります)

バイト内のデータは0x010x000x01、3バイトです

そしてそれをunsignedchar*に変換したい

どうすればいいですか?

ありがとう

4

2 に答える 2

2

一般的に言えば、NSStringObjective-C に出入りしようとするのではなく、直接操作する必要があります。しかし、C に移行する理由 (C のみの API を使用するなど) があるので、冗談を言います。;)

データを別の関数に渡すだけの場合は、次のようにすることができます。

const unsigned char *cString = (const unsigned char *)[byte cStringUsingEncoding: NSASCIIStringEncoding];

C 文字列を変更する必要がある場合 (つまり、非文字にする場合const)、コピーを作成する必要があります。

const unsigned char *cString = (const unsigned char *)strdup([byte cStringUsingEncoding: NSASCIIStringEncoding]);

そして、free()それが終わったら:

free(cString);

これは元の C 文字列またはそれから作成した を変更しないことに注意してくださいNSString。変更できるが必要なNSString場合は、 を使用してNSMutableStringください。

于 2012-06-18T16:29:56.897 に答える
0

NSStringのcStringUsingEncoding:メソッドを試してください。

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//apple_ref/doc/uid/20000154-BAJHJHHD

于 2012-06-18T16:29:08.883 に答える