Dav*_*Dev 14 objective-c nsnumber
我有一个像这样初始化的字典......
keyDictionary = [[NSDictionary dictionaryWithObjects:values forKeys:keys]retain];
Run Code Online (Sandbox Code Playgroud)
其中keys是NSArray字母和其他字符values的一个NSArray,是unsigned chars的一个,它们是这些字符的USB十六进制密钥代码.
USB密钥代码是十六进制值,范围从0x04到0xE7.我正在尝试根据键盘上按下的键创建这两者之间的地图.
这个values数组是这样创建的......
NSArray *values = [NSArray arrayWithObjects:
[NSNumber numberWithUnsignedChar:0x04]/*A*/,
[NSNumber numberWithUnsignedChar:0x05]/*B*/, /*ETC*/];
Run Code Online (Sandbox Code Playgroud)
理想情况下,当我运行此代码时...在哪里 character == @"I"
- (uint8) getUSBCode:(NSString *)character
{
NSNumber *val = [keyDictionary objectForKey:character];
return (uint8)[val unsignedCharValue];
}
Run Code Online (Sandbox Code Playgroud)
我希望能够回来0x0C,但是我作为一个int得到12回归(在我想到之后,这是有道理的).我需要保留十六进制值.我不需要字符串值.我需要直接转换为十六进制值或更好的存储方式
uint8 只是一个typedef unsigned char.
编辑 我之前发布时并不清楚.这就是我需要的.
我需要这些代码的十六进制值,因为它们是通过内部公司网络发送的.此外,按下的键的值正在从big endian(或者很少,它正在逃避我现在的哪一个)转换到另一个,然后通过内部网络传输.我知道这些值存储在二进制文件中,但我需要以十六进制格式传输它们.
另外,我说我从这个功能回来了12.我从调试器中读到12,实际上没有得到这个值.这可能就是我迷茫的原因.
Jer*_*myP 51
12(在基数10中)是 0x0c.
如果要以十六进制打印出来,请使用%x格式说明符,例如
NSLog(@"Hex value of char is 0x%02x", (unsigned int) c);
Run Code Online (Sandbox Code Playgroud)
如果要在调试器中以十六进制形式查看它(假设Xcode 3.2.x),请右键单击该变量并选择十六进制作为格式.
| 归档时间: |
|
| 查看次数: |
27901 次 |
| 最近记录: |