如何将带有十六进制数据的char(或Byte)转换为整数(十进制值)

时间:2014-12-02 05:37:35

标签: ios objective-c iphone macos ios7

我有

char tem;

它的值显示为打击:

Printing description of tem:
(char) tem = '\xd1'

应该等于十进制的209

我的问题是如何以编程方式实现此转换?那就是我希望在这种情况下得到一个等于209的NSInteger。

3 个答案:

答案 0 :(得分:0)

也许我在这里忽略了一些东西,但鉴于char和NSInteger都是完整的类型,你不能这样做吗

char tem = '\xd1';
NSInteger i = tem;

?或者,为了避免签名扩展的意外,

NSInteger i = tem & 0xff;

答案 1 :(得分:0)

char变量 是一个8位整数。您不必将其转换为NSInteger以获取其小数值。只需明确告诉编译器将其解释为无符号8位整数uint8_t

char theChar = '\xd1';
NSLog(@"decimal: %d", (uint8_t)theChar);    //prints 'decimal: 209'

将其转换为NSInteger

NSInteger decimal = (uint8_t)theChar;

答案 2 :(得分:0)

如果你的字符串是ASCII,请执行以下操作:

char a = '3';//example char
int i = (int)(a - '0');