0

Windows と iOS でプロジェクトを作成しています。

ウィンドウでは、ユーザーからの入力を受け取り、それをバイト配列に変換し、すべてのバイトに大きなランダム値を追加して配列を操作し (エンコーディングのようなものです)、文字列に変換されたバイト配列をユーザーに返します。

iOSアプリで同じことを実装したい。UITextField から入力を取得します (アウトレット: myTextField)

問題は、Windows のようにバイト配列に変換して操作するにはどうすればよいかということです。スタックオーバーフローを検索したところ、このコードが見つかりました

const char *bytearray = [self.myTextField.text UTF8String];

これを使用すると、希望どおりのバイト配列が得られましたが、const char * であり、操作できません。では、それを操作するために配列に格納するにはどうすればよいですか。

また、Windows の配列のバイトに値を追加するときに、値が 256 を超えると、自動的に 256 以内に留まります (たとえば、115 + 300、159 として保存されます)。これにより、値を減算して元の値を取得するプロセスが容易になります。バリューバック。iOS アプリでこれを行う方法を教えてください。

 For a better clarity, I'll give an example of how it works in Windows
 byte array contains 'n' (Decimal value: 110) 
 adding 200 to it stores '6' (Decimal value: 54) 
 [310 % 256 = 54]

 When retrieving back original value I subtract 200 from '6' (54 - 200 = -146) 
 and get the original value (256 - 146 = 110) 
 All this is done automatically, by using a byte array (this 256 - 146 thing)

iOS でこのバイト配列機能を実現するにはどうすればよいですか?

4

2 に答える 2

1

Windowsのようにバイト配列に変換して操作するにはどうすればよいですか。スタックオーバーフローを検索したところ、このコードが見つかりました

-getCString:maxLength:encoding:指定したエンコーディングを使用して文字列を解釈し、結果を指定したバッファにコピーするNSString のメソッドを見てください。その後、好きなように操作できます。似たような方法が他にも 1 つまたは 2 つありますが、まずはこの方法から始めてください。

NSString に戻すには+stringWithCString:encoding、 、+stringWithUTF8String:+stringWithCharacters:length:、または-init...それらのいずれかのバージョンを使用できます。

また、Windows の配列のバイトに値を追加するときに、値が 256 を超えると、自動的に 256 以内に留まります (たとえば、115 + 300、159 として保存されます)。これにより、値を減算して元の値を取得するプロセスが容易になります。バリューバック。iOS アプリでこれを行う方法を教えてください。

この種の動作を決定するのはオペレーティング システムではなく、言語です。この点に関する Objective-C の動作は、C、C++、およびおそらく C# の動作とunsigned charまったく同じです。結局のところ、8 ビットに収まる値は非常に多くなります。

于 2012-09-25T13:38:06.837 に答える
1

NSString オブジェクトを NSMutableData オブジェクトに変換します。次に、[NSMutableData mutableBytes] を使用して、操作する配列を取得します。

于 2012-09-25T13:38:11.060 に答える