2012-03-28 7 views
0

ich entschlüssele eine Zeichenfolge mit IOS aber die HEX-Ausgabe ist ein bisschen länger als die echte Zeichenfolge es sind einige mehr 00 am Ende der Zeichenfolge, die ein Problem erzeugen, wenn ich die NSData verwenden.unpad NSData von entschlüsseln auf ios

ist möglich entfernen Sie das 00 generiert?

nachdem ich die hex sah meine Daten tryed sie zu entfernen, manuell die, und es ist Arbeit scheinen mit

[dirtyData setLength:[dirtyData length] - 3] 

aber IDK wie programmatisch zählen, wie viele 00 dort Anzeige sind das Ende

i belive ich brauche some wie die pHP-Funktion, aber kompatibel mit NSData hex

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); 
    } 

Antwort

-1

Wenn Sie irgendwo der Länge der unpadded Daten gespeichert (in Ihrem Beispiel 3), dann können Sie verwenden:

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

Hinweis: NSData ist unmutable, das ist, warum Ihr SetLength nicht funktioniert hat. Der andere Weg ist die Verwendung NSMutableData:

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

sein könnte, erklärte ich schlecht habe, aber mein Problem ist, in irgendeiner Weise die Länge der unpadded Daten dirtyData altray ein i schrieb NSMutableData ist zu erhalten, dass '[dirtyData SetLength : [dirtyData length] - X]; 'nur für den Test brauche ich die X – oscurodrago

+0

Sorry, es ist mir unklar, was Ihr Problem ist. Sie wissen nicht, wie viele 00 Zeichen am Ende der Daten hinzugefügt wurden? – MrTJ

+0

ja, dass mein prolem che zählen '[dirtyData setLength: [dirtyData length] - X]' – oscurodrago

Verwandte Themen