我试图从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
任何想法?
答案 0 :(得分:1)
为什么使用sizeof
运算符?
简单地说:
int dec = dechar;
假设65
为dec
,这将为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字符。