Ich habe mit AES (CrytoSwift) entschlüsselt und links mit einem UInt8-Array. Was ist der beste Ansatz, um das UInt8-Array in eine geeignete Zeichenfolge zu konvertieren? Durch das Umsetzen des Arrays wird nur eine Zeichenfolge zurückgegeben, die genau wie das Array aussieht. (Wenn Sie in Java arbeiten, wird eine neue READABLE-Zeichenfolge erhalten, wenn Byte-Array in String umgewandelt wird).Convert UInt8 Array in String
Antwort
Ich weiß nichts über CryptoSwift. Aber ich kann lesen Sie die README:
Ihren Cryptoswift zwei Funktion liefert auf einfache Weise konvertieren Array von Bytes zu NSData und umgekehrt:
let data = NSData.withBytes([0x01,0x02,0x03]) let bytes:[UInt8] = data.arrayOfBytes()
So wäre meine Vermutung: call NSData.withBytes
um eine NSData zu bekommen. Jetzt können Sie vermutlich NSString(data:encoding:)
anrufen, um eine Zeichenfolge zu erhalten.
Ich bin nicht sicher, ob dies zu Swift neuen 2 ist, aber zumindest die folgenden Werke für mich:
let chars: [UInt8] = [ 49, 50, 51 ]
var str = String(bytes: chars, encoding: NSUTF8StringEncoding)
Darüber hinaus, wenn das Array als C-String formatiert wird (Hinter 0), diese Arbeit:
str = String.fromCString(UnsafePointer(chars)) // UTF-8 is implicit
// or:
str = String(CString: UnsafePointer(chars), encoding: NSUTF8StringEncoding)
Erweiterungen können Sie leicht den Rahmen ändern, um Ihre Bedürfnisse anzupassen, im wesentlichen Ihre eigene Version von Swift Gebäude (mein Lieblingsteil, ich liebe zu gestalten). Versuchen Sie dieses heraus, am Ende Ihrer View-Controller setzen und rufen Sie in viewDidLoad():
func stringToUInt8Extension() {
var cache : [UInt8] = []
for byte : UInt8 in 97..<97+26 {
cache.append(byte)
print(byte)
}
print("The letters of the alphabet are \(String(cache))")
}
extension String {
init(_ bytes: [UInt8]) {
self.init()
for b in bytes {
self.append(UnicodeScalar(b))
}
}
}
SWIFT 3.1 Versuchen Sie folgendes:
let decData = NSData(bytes: enc, length: Int(enc.count))
let base64String = decData.base64EncodedString(options: .lineLength64Characters)
Dies ist String Ausgabe
- 1. Convert uint8 * std :: string
- 2. Golang: convert uint8 bespannen
- 3. Wie UInt8 Byte Array in String in
- 4. Convert String Array in PHP
- 5. Convert Resultset in String-Array
- 6. Convert String [] Array RedisKey [] Array
- 7. convert Array String php
- 8. Convert Array als String-Array in JavaScript
- 9. Umwandlung von UInt8 zu String in swift
- 10. Convert String in Array in Schienen
- 11. Convert String in int-Array in Ruby
- 12. Convert String Array in Javascript in Paar
- 13. convert String-Array auf Integer-Array
- 14. Swift Bit-Array Bytes Array (UInt8 Array)
- 15. Convert PHP-Array in CSV-String
- 16. Convert Array in String aus speziellen Index
- 17. Convert Byte-Array in String TransactSQL mit
- 18. Convert Short Array in String C#
- 19. Convert Javascript String in PHP-Array
- 20. Convert reponse String Array in PHP
- 21. Convert String 2 Dimension Array in Javascript
- 22. Convert Java-Ergebnismenge in String-Array
- 23. Convert Schlüssel/Wert-String in assoziatives Array
- 24. angular2/Typoskript convert String in ein Array
- 25. convert Integer-Array zu String-Array in Javascript
- 26. Convert Iterable in Array
- 27. Convert String Array von json (PHP)
- 28. Convert POST-Array POST zurück String-Daten
- 29. Convert integer Array String an JavaScript
- 30. Convert Integer In String
I versuchte den obigen Vorschlag, aber es kommt immer als Null heraus. Fehle ich etwas? – jaytrixz
@jaytrixz Copypasting der _first zwei Zeilen_ (nur) direkt in Swift Spielplatz funktioniert gut für mich. Die letzten beiden Zeilen funktionieren nicht für das Beispielarray, da es (wie in der Antwort erwähnt) NUL-terminiert sein muss (d. H. Eine C-Zeichenfolge). Wenn Sie den Array-Inhalt auf "[49, 50, 51, 0]" ändern, funktionieren sie. – Arkku