objective-c - 将 NSString 转换为 int HEX

标签 objective-c ios c

我正在尝试将 NSString 转换为 int HEX 数组。

例如,如果我有 @"HELLO" 并且我想得到 0x48 0x45 0x4c 0x4c 0x4f

我已经尝试了字符串的每个字符:

unsigned int hexInt;
sscanf([stringParam UTF8String], "%u", &hexInt);

unsigned int hexInt;
[[NSScanner scannerWithString:stringParam]scanHexInt:&hexInt];

它们似乎都不起作用。

从 ASCII NSString 获取 unsigned int res[] 的最佳方法是什么?

最佳答案

不是真正的答案,但我怀疑原始问题混淆了“十六进制”和“二进制”之间的区别。现代计算机内部的所有数据都以“位”(1 和 0)进行操作。 “整数”通常是 32 或 64 个 1/0 组合在一起。一个“字符”是 8、16 或 32 个 1/0,具体取决于特定的字符集和上下文。

为了让人类能够检查这些电子 1 和 0,它们必须以某种人类可读的形式呈现。最简单的是“二进制”——例如,00001010 二进制的数值为 10(十进制)。由于二进制不是很紧凑,所以发明了“八进制”。在八进制中,00001010 二进制值为 012。

但是大多数计算机“字”都是8位的一些倍数,而八进制并不能均匀表示8位的倍数,所以发明了“hex”(“十六进制”)。在十六进制中,00001010 表示为 0A。

这意味着您将某些内容“转换”为十六进制的唯一时间就是显示它。但是新手经常对这一点感到困惑,并认为将字符转换为数字内部表示就是“将其转换为十六进制”。

事实上,字符已经拥有数字内部表示——这只是提取单个字符并(可选)将其“转换”为整数类型的简单问题(注意“转换”不会更改值,只是可以存储它的变量类型。

在他的最后一句话中,OP 表示他想要一个 int 值数组。各个 NSString 字符已经是整数,只是 unichar 类型。 “转换”为整数只是转换为所需目标类型的问题。

关于objective-c - 将 NSString 转换为 int HEX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14195871/

相关文章:

iphone - 创建一个黑色透明模态视图 Controller

ios - 如何跟踪 AWS Mobile Analytics 中的 session 长度?

iphone - 主要功能上的 Sigabrt

c++ - 为什么 POSIX 允许在现有文件结尾 (fseek) 之外寻找只读模式

c - C : Unable to identify the logical error 中的图形着色

c - 在 C 中遍历堆栈

objective-c - 检查 Objective-C 中是否存在字符串常量

objective-c - 如何为 removeFromSuperview 设置动画

iphone - 带有 UIcontrols 元素的自定义 View

iphone - 检测使用相同 wifi 的 iPhone 设备