Objective-C如何将击键转换为ASCII字符代码?

时间:2015-08-07 18:27:50

标签: ios objective-c ascii nsdictionary lookup-tables

我需要找到一种方法,将用户键入的任意字符转换为ASCII表示形式,以便发送到网络服务。我目前的方法是创建一个查找字典并发送相应的代码。创建这个字典后,我发现很难维护并确定它是否完整:

    __asciiKeycodes[@"F1"] = @(112);
    __asciiKeycodes[@"F2"] = @(113);
    __asciiKeycodes[@"F3"] = @(114);
//...
    __asciiKeycodes[@"a"] = @(97);
    __asciiKeycodes[@"b"] = @(98);
    __asciiKeycodes[@"c"] = @(99);

有没有更好的方法从用户输入的任意键中获取ASCII字符代码(使用标准104键盘)?

3 个答案:

答案 0 :(得分:1)

Objective C具有基本C原始数据类型。你可以做一个小技巧。您想将keyStroke设置为char,然后将其转换为int。 c中从charint的默认转换是char的ascii值。这是一个简单的例子。

char character= 'a'; NSLog("a = %ld", (int)test);

控制台输出= a = 97 换句话说,将int转换为char;

int asciiValue= (int)97; NSLog("97 = %c", (char)asciiValue);

console output = 97 = a

或者,您可以在int或char的初始化中进行直接转换,并将其存储在变量中。

char asciiToCharOf97 = (char)97; //Stores 'a' in asciiToCharOf97

int charToAsciiOfA = (int)'a'; //Stores 97 in charToAsciiOfA

答案 1 :(得分:0)

这似乎适用于大多数键盘按键,不确定功能键和返回键。

NSString* input = @"abcdefghijklkmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_+[]\{}|;':\"\\,./<>?~ ";
for(int i = 0; i<input.length; i ++)
{
    NSLog(@"Found (at %i): %i",i , [input characterAtIndex:i]);
}

答案 2 :(得分:-1)

使用stringWithFormat调用并传递int值。