转换带有ASCII字符的NSString> 127

时间:2013-04-30 05:38:11

标签: objective-c hex extended-ascii

我在路障中,虽然我已经使用Stack Overflow来获取约90%的路径。

我的最终目标是传递NSString(例如@“51 EC”),这是两个以空格分隔的十六进制代码。

我使用以下例程将其转换为基于ASCII的{​​{1}}。

NSString

似乎正在发挥作用。

我将此- (NSString *)hexToString:(NSString *)string { // this routine takes a 2 byte HEX coded sting // with a space between them and converts to // another string that is ASCII character based NSMutableString *newString = [[NSMutableString alloc] init]; NSScanner *scanner = [[NSScanner alloc] initWithString:string]; unsigned value; while ([scanner scanHexInt:&value]) { [newString appendFormat:@"%c",(char)(value & 0xFF)]; } string = [newString copy]; return string; } 发送到使用串行电缆的设备。另一端的设备回传NSString代码字符串(可包括ASCII值> 127 dec的字符)。

我找到了以下例程:

ASCII

我想阅读此- (NSString *)stringToHex:(NSString *)str { NSUInteger len = [str length]; unichar *chars = malloc(len * sizeof(unichar)); [str getCharacters:chars]; NSMutableString *hexString = [[NSMutableString alloc] init]; for (NSUInteger i = 0; i < len; i++) { [hexString appendFormat:@"%02x", chars[i]]; } free(chars); return hexString; } 并将其转换为NSString

我在传递@"51EC"已编码的ASCII时获得的回复是NSString

似乎所有字节都是&lt; 127正确转换。我认为这是因为例程使用unichar 这可能会将其限制为0到127.

希望我提供足够的信息来提出正确的问题。

也许有一个更优雅的解决方案。

你可以假设我是一位经验丰富的硬件工程师,但是在Objective-C是一名新手。

0 个答案:

没有答案