【问题标题】:Objective-C how to convert a keystroke to ASCII character code?Objective-C如何将击键转换为ASCII字符代码?
【发布时间】:2015-08-07 18:27:49
【问题描述】:

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

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

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

【问题讨论】:

  • 请查看此答案,希望对您有所帮助。 stackoverflow.com/questions/2832729/…
  • 在接收键盘事件的视图中覆盖keyDown(event: NSEvent)并从事件的keyCode属性中获取键码。
  • 你打算用什么来表示字母“p”?那应该是 112,但您将它用于 F1 键。

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


【解决方案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);

控制台输出 = 97 = a

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

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

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

【讨论】:

  • 另外,ascii 是一个标准化的字符集,不包括功能键,你的 112 实际上会返回一个 p,找到这个网站来解释它,希望它能帮助你或引导你走向正确的方向如果您的项目必须具备功能键。 link
【解决方案2】:

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

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

【讨论】:

  • @zaph 这是 OP 回答他自己的问题。
  • 问题中的“F1”发生了什么?答案与问题不符。
【解决方案3】:

使用 stringWithFormat 调用并传递 int 值。

【讨论】:

  • 试试这个:NSString *obj = [NSString stringWithFormat: @"%c", 97];
猜你喜欢
  • 2011-02-19
  • 2011-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-16
  • 2016-06-21
相关资源
最近更新 更多