【问题标题】:iOS: Convert a string from little endiand to big endianiOS:将字符串从小端转换为大端
【发布时间】:2016-09-30 10:29:31
【问题描述】:

我有一个 little 字节序的字符串,我想将它转换为 big 字节序。

这个“647b”应该变成“7b64”。如何在 iOS 中执行此操作(欢迎使用 C++ 代码)?

PS:我是从 NSData 对象派生字符串。

【问题讨论】:

  • 你想像endians 的概念那样改变内存位置还是只是想改变这样的字符串值?
  • 究竟什么是“647b”?它是一个有四个字符的字符串,给出两个字节的十六进制表示吗?或者它是一些字符串内部的十六进制表示?你到底想达到什么目的?请更好地描述它。最有可能的是,您需要在涉及任何字符串之前更改 NSData 实例中的 endiness。
  • stackoverflow.com/questions/8552864/… 尝试使用此解决方案。 @Codo 你对我的帖子是正确的。

标签: ios objective-c string endianness


【解决方案1】:

你没有说你是如何将你的数据转换成 NSString 的,所以我必须在这里做一些假设。

NSStrings(和 CFStringRefs,它们是免费桥接的)具有编码。许多 iOS 开发者不需要记住他们的字符串是 UTF8Encoded。

[如果您查看来自 Apple (CoreFoundation & Foundation) 的字符串编码列表,您会发现其中一些确实指定了小端和大端。

也许最好的方式来做你想做的事情是这样的:

// load it as UTF16 big endian
NSString *str = [NSString alloc] initWithData:yourDataObject encoding:NSUTF16BigEndianStringEncoding];

That line of code I found in this related question.

【讨论】:

    猜你喜欢
    • 2018-10-19
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 2011-02-16
    相关资源
    最近更新 更多