我有一个场景,我想将字符串转换为HexValue并从HexValue中获取字符串
例如,我有一个值为' 33'在里面 。因此,当我将其转换为十六进制时,我得到的结果为' 21'当我转换' 21'这是十六进制值回到字符串我应该得到' 33'回来作为输出。
以下是我为将字符串转换为十六进制所做的代码
+ (NSString *) hexValue:(NSString *)str {
return [NSString stringWithFormat:@"%lX",
(unsigned long)[str integerValue]];
}
所以当我通过! 33'对于这种方法,它返回' 21'哪个是对的 但问题是我想要检索' 33'从' 21'
返回以下是代码
+ (NSString *) unHexValue:(NSString *)str {
return [NSString stringWithFormat:@"%@",str];
}
但这不会返回预期值,即! 33'相反,它只返回21。
答案 0 :(得分:0)
它对我有用并且能够获取相同的结果。希望它会帮助你。
NSString *strHex = [self hexfromString:@"33"];
NSString *newStr = [self stringFromHexString:strHex];
//来自字符串的十六进制
- (NSString *)hexfromString:(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 [NSString stringWithFormat:@"%02x", chars[i]]]; /*previous input*/
[hexString appendFormat:@"%02x", chars[i]]; /*EDITED PER COMMENT BELOW*/
}
free(chars);
return hexString;
}
//来自HexString的字符串
- (NSString *)stringFromHexString:(NSString *)hexString {
// The hex codes should all be two characters.
if (([hexString length] % 2) != 0)
return nil;
NSMutableString *string = [NSMutableString string];
for (NSInteger i = 0; i < [hexString length]; i += 2) {
NSString *hex = [hexString substringWithRange:NSMakeRange(i, 2)];
NSInteger decimalValue = 0;
sscanf([hex UTF8String], "%x", &decimalValue);
[string appendFormat:@"%c", decimalValue];
}
return string;
}