Tôi đã giải mã bằng AES (CrytoSwift) và sáng trái với mảng UInt8. Cách tiếp cận tốt nhất để bí mật mảng UInt8 thành chuỗi ứng dụng là gì? Việc đúc mảng chỉ trả về một chuỗi trông giống hệt mảng đó. (Khi thực hiện trong Java, một chuỗi READABLE mới thu được khi đúc mảng Byte thành String).Chuyển đổi UInt8 Array thành String
Trả lời
Tôi không biết gì về CryptoSwift. Nhưng tôi có thể đọc các README:
Để tiện cho bạn CryptoSwift cung cấp hai chức năng để dễ dàng chuyển đổi mảng byte để NSData và cách khác xung quanh:
let data = NSData.withBytes([0x01,0x02,0x03]) let bytes:[UInt8] = data.arrayOfBytes()
Vì vậy, tôi đoán sẽ là: gọi NSData.withBytes
để có được một NSData. Bây giờ bạn có thể gọi NSString(data:encoding:)
để nhận chuỗi.
Tôi không chắc chắn nếu điều này là mới để Swift 2, nhưng ít nhất các công việc sau cho tôi:
let chars: [UInt8] = [ 49, 50, 51 ]
var str = String(bytes: chars, encoding: NSUTF8StringEncoding)
Ngoài ra, nếu mảng được định dạng như là một chuỗi C (trailing 0), những công việc:
str = String.fromCString(UnsafePointer(chars)) // UTF-8 is implicit
// or:
str = String(CString: UnsafePointer(chars), encoding: NSUTF8StringEncoding)
Extensions cho phép bạn dễ dàng thay đổi khuôn khổ để phù hợp với nhu cầu của bạn, về cơ bản việc xây dựng phiên bản của riêng bạn của Swift (phần yêu thích của tôi, tôi yêu để tùy chỉnh). Hãy thử một trong này ra, đặt ở phần cuối của bộ điều khiển tầm nhìn của bạn và gọi điện trong 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 Hãy thử điều này:
let decData = NSData(bytes: enc, length: Int(enc.count))
let base64String = decData.base64EncodedString(options: .lineLength64Characters)
Đây là chuỗi xuất
- 1. Chuyển đổi String [] array để RedisKey [] array
- 2. Chuyển đổi vectơ của uint8 thành chuỗi
- 3. Làm thế nào để chuyển đổi RDD [(String, String)] thành RDD [Array [String]]?
- 4. Chuyển đổi Iterable thành Array
- 5. Cách chuyển đổi mảng byte UInt8 thành chuỗi trong Swift
- 6. Chuyển đổi Byte Array thành bit Array?
- 7. PowerShell chuyển đổi Char Array thành chuỗi
- 8. Chuyển đổi Array của UnicodeScalar vào String trong Swift
- 9. Chuyển đổi JsDefined thành String
- 10. Chuyển đổi Byte Array thành Bitset
- 11. Chuyển đổi Hash Map thành 2D Array
- 12. Chuyển đổi từ Byte Array thành String và so sánh với một Chuỗi khác (java)
- 13. Chuyển đổi Array Json
- 14. Chuyển đổi std :: string thành số nguyên
- 15. Cách chuyển đổi PathBuf thành String
- 16. Cách chuyển đổi Bitmap thành Base64 String
- 17. Chuyển đổi QString thành std :: string
- 18. Python: Chuyển đổi từ Tuple thành String?
- 19. chuyển đổi std :: string thành basic_ostream?
- 20. chuyển đổi Rcpp :: CharacterVector thành std :: string
- 21. Chuyển đổi uint64_t thành std :: string
- 22. Chuyển đổi một void * thành std :: string
- 23. Cách chuyển đổi Writer thành String
- 24. Chuyển đổi một giá trị uint16 thành một mảng uint8 [2]
- 25. Làm thế nào để chuyển đổi SimpleXMLObject thành PHP Array?
- 26. Chuyển đổi chuỗi mảng thành Int Array Swift 2?
- 27. Word Array to String
- 28. Loại mảngError: không thể chuyển đổi Fixnum thành String
- 29. Scala - chuyển đổi mảng [String] thành mảng [Double]
- 30. Chuyển đổi kết quả Java thành mảng String
tôi đã thử đề xuất ở trên nhưng nó luôn xuất hiện dưới dạng nil. Tui bỏ lỡ điều gì vậy? – jaytrixz
@jaytrixz Sao chép _first hai dòng_ (chỉ) trực tiếp vào sân chơi Swift hoạt động tốt cho tôi. Hai dòng cuối cùng không hoạt động cho mảng ví dụ, bởi vì (như đã đề cập trong câu trả lời), nó cần phải được kết thúc bằng NUL (tức là, một chuỗi C). Thay đổi nội dung của mảng thành '[49, 50, 51, 0]' làm cho chúng hoạt động. – Arkku