Wie kann ich nacheinander [NSData bytes]
iterieren und sie an eine NSMutableString
anhängen oder sie unter Verwendung NSLog()
drucken?Iterate durch NSData Bytes
Antwort
Anstatt Bytes auf ein veränderbares Zeichenfolge anhängt, erstellen Sie eine Zeichenfolge, die die Daten mit:
// Be sure to use the right encoding:
NSString *result = [[NSString alloc] initWithData:myData encoding:NSUTF8StringEncoding];
Wenn Sie wirklich durch die Bytes Schleife wollen:
NSMutableString *result = [NSMutableString string];
const char *bytes = [myData bytes];
for (int i = 0; i < [myData length]; i++)
{
[result appendFormat:@"%02hhx", (unsigned char)bytes[i]];
}
Update! Seit iOS 7 gibt es eine neue, bevorzugte Möglichkeit, alle Bytes in einem NSData-Objekt zu durchlaufen.
Da ein NSData
jetzt aus mehreren disjunkten Bytearray-Chunks unter der Haube bestehen kann, kann der Aufruf [NSData bytes]
manchmal speicherineffizient sein, weil es alle zugrunde liegenden Chunks in einem einzigen Bytearray für den Aufrufer abflachen muss.
Um dieses Verhalten zu vermeiden, ist es besser, Bytes mit der enumerateByteRangesUsingBlock:
-Methode von NSData aufzuzählen, die Bereiche der vorhandenen zugrunde liegenden Chunks zurückgibt, auf die Sie direkt zugreifen können, ohne dass neue Arraystrukturen generiert werden müssen. Natürlich müssen Sie darauf achten, nicht unangemessen in dem bereitgestellten C-artigen Array herumzustochern.
NSMutableString* resultAsHexBytes = [NSMutableString string];
[data enumerateByteRangesUsingBlock:^(const void *bytes,
NSRange byteRange,
BOOL *stop) {
//To print raw byte values as hex
for (NSUInteger i = 0; i < byteRange.length; ++i) {
[resultAsHexBytes appendFormat:@"%02x", ((uint8_t*)bytes)[i]];
}
}];
- 1. NSData Bytes schreibgeschützt?
- 2. Inaccurate NSData Größe in Bytes
- 3. NSData gibt 0 Bytes zurück
- 4. konvertieren NSData Länge von Bytes zu megs
- 5. umgekehrte Reihenfolge der Bytes in NSData
- 6. Iterate durch Registrierungseinträge
- 7. Iterate durch verschachtelte hashmap
- 8. Iterate durch Json Array
- 9. Iterate durch StringProperty
- 10. Iterate durch einen Namespace
- 11. Iterate bedingt durch Array
- 12. Iterate durch Liste R
- 13. Iterate Enum durch Argument
- 14. Iterate durch Repeater
- 15. Iterate durch Registry-Unterordner
- 16. Iterate durch ein Struct?
- 17. Symfony Iterate durch Objekte
- 18. Wie iterate durch int?
- 19. Wie durch iterate google multimap
- 20. Iterate durch Unterverzeichnisse in bash
- 21. Iterate durch DataRepeater (VB.Net PowerPack)
- 22. Kotlin: Iterate durch ein JSONArray
- 23. Iterate durch VBA Dropdown-Liste
- 24. Iterate durch Pandas Reihen effizient
- 25. Iterate durch ein VB6-Wörterbuch
- 26. Apple Emoji/Iterate durch NSString
- 27. Iterate durch verschachtelte JSON-Objekt-Array
- 28. Iterate durch einen String Swift 2.0
- 29. Iterate durch zwei Spalten und vergleichen sie
- 30. Wie iterate durch querySelectorAll Ergebnisse in Nightwatch
Was sollte die DoSomethingWithChar-Leitung z.B. Wenn ich die hexadezimale Darstellung des Bytes zu einem NSMutableString hinzufügen möchte? – yannis
Was ist, wenn das Nsdata nicht wirklich eine Zeichenkette ist? Was, wenn es 0x00 Byte enthält, dann werden Sie nicht in der Lage sein, ganze Daten zu durchlaufen. –