当前位置: 首页 > 知识库问答 >
问题:

将UTF-8字符串转换为其整数值/UniChar(目标C)

邴修远
2023-03-14

我目前正在开发一个Objective C程序,它接收UTF-8字符作为字符串的输入,如“U 0008”。这些字符串的类型为NSString。现在,我需要将表示此字符的字符串转换为相应的UniChar(0x0008)。

你知道这样做的优雅方式吗?

谢谢佩德罗

共有1个答案

相洛华
2023-03-14

如果您有一个格式为“U xxxx”的字符串,其中x是十六进制数字,那么下面是两种获取值的方法,每种方法的“优雅”都在旁观者的眼中:

a)使用NSScanner。方法scanString: intoString可用于检查U,方法scanHexInt:读取十六进制值,方法isAtEnd检查十六进制值后没有剩余任何内容。此方法不限制十六进制数最多为四位。

b) 使用sscanf或strtol。这些是C级API,您可以使用UTF8String从NSString获取C字符串。使用scanf,您可以检查U,并在一行中读取一个十六进制数,如果这是您对“优雅”的定义,则可以设置最大位数。然而,检查所有输入是否被使用需要一些思考。

有许多其他方法可以做到这一点,从滚动到使用正则表达式(NSRegularExpression)检查格式并一次性提取4个十六进制数字,以便转换为整数。

请注意,如果您看到4个十六进制数字,那么您有一个16位值,更像UTF-16而不是UTF-8。

 类似资料:
  • 问题内容: 从我的数据库即时通讯获取以下字符串: 它应该说的是: 我试图像这样将其转换为utf-8: 但是仍然是同样的问题。 有任何想法吗? 问题答案: 使用npm中的utf8模块对字符串进行编码/解码。 安装: 在浏览器中: 在Node.js中: API: 编码: 将任何给定的JavaScript字符串(字符串)编码为UTF-8,并返回该字符串的UTF-8编码版本。如果输入字符串包含非标量值(即

  • 问题内容: 我需要将unicode字符串转换为具有以unicode编码的非ascii字符的字符串。例如,字符串“汉字Max”应显示为“ \ u6F22 \ u5B57 Max”。 我尝试过的 的不同组合 新的String(sourceString.getBytes(encoding1),encoding2) Apache StringEscapeUtils也会转义ascii字符,例如双引号 Str

  • 我有一个从第三方应用程序收到的字符串,我希望在我的Windows界面上使用C#以任何语言正确显示它。 由于编码不正确,我的字符串中有一段在西班牙语中如下所示: AcciÃn 然而它应该看起来像这样: 阿克松 根据这个问题的答案:如何知道C#中的字符串编码,我接收到的编码应该已经在UTF-8中出现了,但它是在编码时读取的。默认值(可能是ANSI?)。 我试图将这个字符串转换成真正的UTF-8,但问题

  • 如何将字符串值转换为整数,并将转换后的值乘以整数,这样我就可以得到300.00的结果。见下面的例子- 如果我像这样编码,那么我就会出错-

  • 问题内容: 如何在Swift中将字符串转换为Unicode(UTF-8)字符串? 在Objective中,我可以这样写: 如何在Swift中做类似的事情? 问题答案: 使用此代码, 希望对您有所帮助

  • 问题内容: 所以我在正确转换法语字符时遇到问题。基本上,我有一个将数据发送到SQL数据库的表单。然后,在另一页上,从该数据库中检索数据并显示给用户。但是数据(字符串)显示的字符却很奇怪,因为另一页上的表单输入是法语。我通过使用以下将字符串转换为正确字符集的函数克服了这个问题。但是,显然更好的解决方案是先将其转换,然后将其发送到数据库。现在,这里是将从数据库检索到的字符串转换为适当字符集的代码: 现