我在路障中,虽然我已经使用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是一名新手。