如果您想了解Swift2.1[UInt8]--utf8->字符串?和swift字符串操作的知识,那么本篇文章将是您的不二之选。我们将深入剖析Swift2.1[UInt8]--utf8->字符串?的各个
如果您想了解Swift 2.1 [UInt8] --utf8->字符串?和swift字符串操作的知识,那么本篇文章将是您的不二之选。我们将深入剖析Swift 2.1 [UInt8] --utf8->字符串?的各个方面,并为您解答swift字符串操作的疑在这篇文章中,我们将为您介绍Swift 2.1 [UInt8] --utf8->字符串?的相关知识,同时也会详细的解释swift字符串操作的运用方法,并给出实际的案例分析,希望能帮助到您!
本文目录一览:- Swift 2.1 [UInt8] --utf8->字符串?(swift字符串操作)
- ios – 在Swift中将UIImage转换为UInt8数组
- Swift 5 将使用 UTF-8 作为首选字符串编码
- swift String to UTF8编码
- Swift UTF8编码和非UTF8字符
Swift 2.1 [UInt8] --utf8->字符串?(swift字符串操作)
我知道Stack Overflow和其他地方都存在这样的问题。但是它似乎也发展了很多。
给定一个列表UInt8
(基本上是一个swift字节数组),将其隐蔽到swift的最简单/惯用的方法是什么String
?
我对不使用NSData /
NSString的方法特别感兴趣,因为如果Santa将Swift带入Linux的世界,那么无疑将没有NS库,我想知道如何做到这一点。迅速。
答案1
小编典典let buffUInt8: Array<UInt8> = [97, 98, 115, 100, 114, 102, 103, 104, 0]// you need Int8 arraylet buffInt8 = buffUInt8.map{ Int8(bitPattern: $0)}let str = String.fromCString(buffInt8) // "absdrfgh"
或者,您可以使用
String.fromCStringRepairingIllFormedUTF8(cs: UnsafePointer<CChar>) -> (String?, hadError: Bool)
ios – 在Swift中将UIImage转换为UInt8数组
我一直在对此进行大量研究,并且已经将几种不同的解决方案集成到我的项目中,但它们似乎都没有.我目前的解决方案是从this thread借来的.
但是,当我运行我的代码时,会发生两件事:
>像素阵列保持初始化但未填充(全0)
>我得到两个错误:
CGBitmapContextCreate:不支持的参数组合:设置CGBITMAP_CONTEXT_LOG_ERRORS环境变量以查看详细信息
和
CGContextDrawImage: invalid context 0x0. If you want to see the backtrace,please set
有任何想法吗?这是我当前构建的函数,我正在调用我的Image类:
init?(fromImage image: UIImage!) { let imageRef = image!.CGImage self.width = CGImageGetWidth(imageRef) self.height = CGImageGetHeight(imageRef) let colorspace = CGColorSpaceCreateDeviceRGB() let bytesPerRow = (4 * width); let bitsPerComponent :UInt = 8 let pixels = UnsafeMutablePointer<UInt8>(malloc(width*height*4)) var context = CGBitmapContextCreate(pixels,width,height,Int(bitsPerComponent),bytesPerRow,colorspace,0); CGContextDrawImage(context,CGRectMake(0,CGFloat(width),CGFloat(height)),imageRef)
任何指针都会有很大的帮助,因为我不熟悉所有这些CGBitmap的工作原理.
万分感谢!
解决方法
支持的bitsPerComponent,colorspace和bitmapInfo组合可以在这里找到:
https://developer.apple.com/library/mac/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_context/dq_context.html#//apple_ref/doc/uid/TP30001066-CH203-BCIBHHBB
请注意,每像素32位(bpp)是每像素4个字节,您可以使用它来计算bytesPerRow
Swift 5 将使用 UTF-8 作为首选字符串编码
Swift 官方博客公布了 Swift 5 将首选字符串编码从 UTF-16 切换到 UTF-8 的消息,同时保留与 Objective-C 有效的互操作性。因为 String 类型会对这些底层问题进行抽象,所以开发者不需要对源代码进行更改。
切换到 UTF-8 实现了 String 的长期目标之一 —— 实现高性能处理,这也是关注性能的开发者呼声最大的请求。更重要的是,该功能还为将来提供更高性能的 API 奠定了基础。字符串的首选编码将会成为影响 Swift ABI 性能的一部分,因此这次在 Swift 5 版本中为了 ABI 的稳定性而实现该功能是势在必行的。
背景
尽管 String 类型在技术上是同一个结构,但它可以以多种形式存在。我们不妨将 String 视为手工枚举,使用传统的 bit-twiddling 技术手工制作,以生成紧凑而高效的代码。
由上图可以看到,Swift 5 之前,字符串内容以 UTF-16 和 ASCII 两种形式存储。出于与现代计算环境的高效兼容性、简化相关操作以及对性能提升的考虑,Swift 决定在 Swift 5 中使用 UTF-8 作为首选字符串编码。
对现有的影响
按照官方说法,在代码层面,这个变动对大多数开发者的影响不大,并且依然会提供与 Objective-C API 的高效互操作性。
swift String to UTF8编码
var testString:String = "wo shi string" var utf8String = (testString as Nsstring).UTF8String
Swift UTF8编码和非UTF8字符
我有一些来自json文件的文本。在本文中,我应用了UTF8编码,但是该编码器无法识别非标准字符,àèìòù
并且为大写字符,是否有一种方法可以净化我的字符串?
我的功能:
func stringToUTF8String (stringaDaConvertire stringa: String) -> String { let encodedData = stringa.dataUsingEncoding(NSUTF8StringEncoding)! let attributedOptions = [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType] let attributedString = NSAttributedString(data: encodedData, options: attributedOptions, documentAttributes: nil, error: nil)! //println(attributedString.string) return attributedString.string}
答案1
小编典典我找到了解决方案。
UTF8采用8位表ASCII表,而UTF16采用16位ASCII表,解决方案很简单,只需将函数修改为:
func stringToUTF16String (stringaDaConvertire stringa: String) -> String { let encodedData = stringa.dataUsingEncoding(NSUTF16StringEncoding)! let attributedOptions = [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType] let attributedString = NSAttributedString(data: encodedData, options: attributedOptions, documentAttributes: nil, error: nil)! //println(attributedString.string) return attributedString.string}
今天关于Swift 2.1 [UInt8] --utf8->字符串?和swift字符串操作的讲解已经结束,谢谢您的阅读,如果想了解更多关于ios – 在Swift中将UIImage转换为UInt8数组、Swift 5 将使用 UTF-8 作为首选字符串编码、swift String to UTF8编码、Swift UTF8编码和非UTF8字符的相关知识,请在本站搜索。
本文标签: