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

Objective-C how to convert a keystroke to ASCII character code?

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

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

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

使用 stringWithFormat 调用并传递 int 值。

这似乎适用于大多数键盘键,但不确定功能键和 return 键。

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

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);

控制台输出=97 = a

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

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

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