2012-04-12 8 views
0

私は[]のバイトに特殊な文字列を変換するためにJavaを使用する場合、その結果は次のとおりです。私は同じ文字列を変換するためにobjective-cを使用する場合Objective-Cのバイト[]とJavaバイト[]

78 
-19 
-71 
-54 
-61 
-87 
12 
-99 

と、その結果は次のとおりです。

78 
237 
185 
202 
195 
169 
12 
157 

バイト要素がobjective-c128よりも大きくなるのはなぜ?私は理由が約unsignedについて知っているが、それを解決する方法は?

+0

符号付きバイトを使用します。 – dayitv89

答えて

0

これに対処する方法は、Javaバイトを印刷したり比較したりするときに、単に「符号なし」として扱うことです。これを行う最も簡単な方法は、byteValue & 0xFFを使用してバイトの符号なし値をintとして取得することですが、ライブラリによっては痛みを軽減することができます。たとえば、Guava'sUnsignedBytesとすると、UnsignedBytes.join(" ", byteArray)のようにスペースで区切られた符号なしバイトあなたが一例として挙げた78 237 185 ... (開示:私はGuavaに貢献します)

+0

私はobjective-cを使ってDESで文字列を暗号化していますが、結果はjava encryptを使用するのと同じではありません。私に解決策を教えてもらえますか? – dale

0

Javaバイトが署名され、Objective-Cバイトが署名されていないようです。 0より小さいJavaバイトに256を追加すると、対応するObj-Cバイトが得られます(> = 0のJavaバイトは既にObj-Cバイトと同じです)。それは簡単に変換する必要があります。

関連する問題