ASCII字符到十进制代码值

时间:2014-06-03 00:00:55

标签: ios objective-c uitextfield ascii

我试图从UITextField中获取一个字符并找到它的ascii十进制代码值。我可以将字段值保存到char变量中,但是我在获取十进制代码值时遇到问题。请参阅下面的问题代码段。

//    grabs letter from text field 
char dechar = [self.decInput.text characterAtIndex:0]; //trying to input a capital A (for example)
NSLog(@"dechar: %c",dechar); // verifies that dechar holds my intended letter
//    below line is where i need help
int dec = sizeof(dechar);
NSLog(@"dec: %d",dec); //this returns a value of 1
//    want to pass my char dechar into below 'A' since this returns the proper ASCII decimal code of 65
int decimalCode = 'A';
NSLog(@"value: %d",decimalCode); // this shows 65 as it should

我知道我可以用另一种方式......

int dec = [self.decInput.text floatValue];
char letter = dec;
NSLog(@"ch = %c",letter); //this returns the correct ASCII letter

任何想法?

2 个答案:

答案 0 :(得分:1)

为什么使用sizeof运算符?

简单地说:

int dec = dechar;

假设65dec,这将为dechar A提供。

顺便说一句 - 你真的应该将dechar更改为unichar,而不是char

答案 1 :(得分:0)

iOS使用unicode,而不是ASCII。 Unicode字符通常是16位,而不是8位。

使用NSString方法characterAtIndex,它返回一个unichar。 unichar是16位整数而不是8位值,因此它可以代表更多的字符。

如果要从NSString获取ASCII值,首先应使用NSString方法dataUsingEncoding:NSASCIIStringEncoding将其转换为ASCII,然后在您返回的日期迭代字节。

请注意,ASCII只能代表一小部分unicode字符。