GVKun编程网logo

Swift 2.1 [UInt8] --utf8->字符串?(swift字符串操作)

9

如果您想了解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字符串操作)

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数组

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的工作原理.

万分感谢!

解决方法

您不应该将0作为CGBitmapContextCreate的bitmapInfo参数传递.对于RGBA,您将传递CGImageAlphaInfo.PremultipliedLast.rawValue.

支持的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 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编码

swift String to UTF8编码

var testString:String = "wo shi string"

var utf8String = (testString as Nsstring).UTF8String

Swift UTF8编码和非UTF8字符

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字符的相关知识,请在本站搜索。

本文标签: