2012-03-28 4 views
0

IOSで文字列を復号化しますが、HEX出力は実際の文字列より少しロガーです NSDataを使用すると問題が発生する文字列の最後に00があります。unpad NSData iosの復号化から

可能なのは除きますか?

私は私が必要と信じて、私のデータはてmanualyそれらを取り除くためにしようと試み、それが

[dirtyData setLength:[dirtyData length] - 3] 

で仕事を思えますが、広告の終了

があるどのように多くの00プログラムで数える方法IDKの六角を見た後にそのPHPの関数のようsomethinkが、NSDataの六角と互換性

function unpad($text){ 
     $pad = ord($text{strlen($text)-1}); 
     if ($pad > strlen($text)) return false; 
     if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return false; 

     return substr($text, 0, -1 * $pad); 
    } 

答えて

-1

あなたがどこかに(あなたの例3)でパディングされていないデータの長さを格納した場合、あなたが使用することができます:

NSUInteger unpaddedLen = [dirtyData length] - 3; 
NSRange unpaddedRange = NSMakeRange(0, unpaddedLen); 
NSData* unpaddedData = [dirtyData subdataWithRange:unpaddedRange]; 

注:NSDataは変更できません。そのため、あなたのsetLengthは機能しませんでした。他の方法はNSMutableData使用することです:

NSMutableData* dirtyData; 
// fill dirtyData as just it would be NSData 
[dirtyData setLength:[dirtyData length] - 3]; // will now work 
+0

は私が悪い説明してきたかもしれないが、私の問題は、何らかの方法で dirtyDataは、私が書いたNSMutableData altrayでパディングされていないデータの長さを取得することです[ 'そのdirtyDataはsetLength :[ダーティデータ長] - X]; 'テスト用です。Xを取得する必要があります – oscurodrago

+0

あなたの問題が何であるかはわかりません。あなたは、データの最後に何文字を追加するのか分かりませんか? – MrTJ

+0

はい私のprolem che数 '[dirtyData setLength:[dirtyData length] - X]' – oscurodrago

関連する問題