AES (CrytoSwift) kullanarak şifresini çözdüm ve bir UInt8 dizisiyle kaldım. UInt8 dizisini bir uygulama dizesine dönüştürmek için en iyi yaklaşım nedir? Diziyi yayınlamak, diziye tam olarak benzeyen bir dize geri verir. (Java'da yapıldığında, Byte dizisini String'e gönderirken yeni bir READABLE dizesi elde edilir).UInt8 Dizisini Dize Dönüştür
cevap
CryptoSwift hakkında hiçbir şey bilmiyorum.
let data = NSData.withBytes([0x01,0x02,0x03])
let bytes:[UInt8] = data.arrayOfBytes()
Yani benim tahminim olurdu: NSData.withBytes
çağrı CryptoSwift kolayca NSData ve çevresinde başka bir şekilde bayt dizisi dönüştürmek için iki fonksiyonu sağlar Size kolaylık sağlamak için
: Ama README okuyabilir NSData almak için. Artık bir ipucu almak için muhtemelen
NSString(data:encoding:)
'u arayabilirsiniz.
Bu Swift 2 yeni olup olmadığından emin değilim, ama en azından benim için şu işleri: Ayrıca
let chars: [UInt8] = [ 49, 50, 51 ]
var str = String(bytes: chars, encoding: NSUTF8StringEncoding)
, array (0 sondaki) C dize olarak biçimlendirilmiş ise, bu eser:
str = String.fromCString(UnsafePointer(chars)) // UTF-8 is implicit
// or:
str = String(CString: UnsafePointer(chars), encoding: NSUTF8StringEncoding)
Uzantıları kolayca esasen Swift kendi versiyonunu bina, ihtiyaçlarınıza göre çerçeveyi değiştirmesine izin (benim favori parçası, ben özelleştirmek için seviyorum).) (Görünümünüzü denetleyicisi sonunda koymak, bu bir deneyin ve viewDidLoad çağrı:
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 deneyin:
let decData = NSData(bytes: enc, length: Int(enc.count))
let base64String = decData.base64EncodedString(options: .lineLength64Characters)
Bu dize çıkış
- 1. POST dizisini json biçimine dönüştür
- 2. Dize dizisini
- 3. Bitmap'i Dize Dönüştür
- 4. Geometri/Yol, Minilanguage Dize Dönüştür?
- 5. uint8 tuhaf karakterleri görüntüler
- 6. dize dizisini bayt dizisine dönüştürme
- 7. Dize dizisini java.util.List dosyasına dönüştürme
- 8. Dize için vücut bağımsız değişkenini dönüştür ve
- 9. NSAttributedString öğesini dize ve geri dönüştür
- 10. 2B Dize Dizisi'nde 2B Listesini Dönüştür C#
- 11. Bir dize dizisini C nesnesinde bir dize dizisine dönüştürme D #
- 12. Bir dize dizisini bir dize konumuna göre sıralama (C#)
- 13. Refactoring Ruby: Dize dizisini int dizisine dönüştürme
- 14. dize dizisini tamsayı php olarak dönüştürün
- 15. Json dizisini görüntülemeden önce dize ekleme
- 16. Dize dizisini ölçüt olarak VBA otomatik filtresi
- 17. Dize dizisini C++/cli dizinine dönüştürme
- 18. JSON - NSArray'a Dönüştür
- 19. Dosya Dönüştür [] [] Java
- 20. İkili dizgeyi tamsayıya dönüştür
- 21. Düğüm arabelleğe dönüştür Düğüm
- 22. VBA Diziyi dönüştür Tür
- 23. asp.net mvc tıraş bıçağı iki öğeyi çarpıp dize dönüştür
- 24. NSMutableAttributedString öğesini NSString'e dönüştür
- 25. Asp.Net: PDF'i Image'e Dönüştür
- 26. Ascii kodlamasını python'a dönüştür (hızlıca)
- 27. Kullanıcı girdisini tamsayıya dönüştür
- 28. Biçime dönüştür YYYY-AA-GG
- 29. Onaltılı dizeyi IP Adresine Dönüştür
- 30. golang "tür [] dizgisini" dizgeye dönüştür "
I Yukarıdaki öneriyi denedi ama her zaman sıfır olarak çıkıyor. Bir şey mi eksik? – jaytrixz
@jaytrixz Hemen hemen iki Swift_confini (sadece) Swift oyun alanına kopyalamak benim için iyi çalışıyor. Son iki satır örnek dizisi için çalışmaz, çünkü (cevapta belirtildiği gibi), NUL sonlandırmalı (yani, bir C dizgisi) gerekir. Dizi içeriklerini '[49, 50, 51, 0]' olarak değiştirmek onları çalışır kılar. – Arkku