Objective c 将NSString中的文本转换为它';s 8字节ASCII十六进制等效值,并存储回NSString
我想将NSStringObjective c 将NSString中的文本转换为它';s 8字节ASCII十六进制等效值,并存储回NSString,objective-c,ios,Objective C,Ios,我想将NSString@“2525”转换为NSString@“003200350032035”。十六进制形式的“2”的8字节ASCII值是“0032”,而“5”的8字节ASCII值是“0035”。为了得到c字符串的等价物,我试着 const char *pinUTF8 = [pin cStringUsingEncoding:NSASCIIStringEncoding]; …但正如你所看到的,我正在努力解决这个问题,我知道这不会那么容易。有什么建议吗 非常感谢你的智慧 试试这个: NSStrin
@“2525”
转换为NSString@“003200350032035”
。十六进制形式的“2”
的8字节ASCII值是“0032”
,而“5”
的8字节ASCII值是“0035”
。为了得到c字符串的等价物,我试着
const char *pinUTF8 = [pin cStringUsingEncoding:NSASCIIStringEncoding];
…但正如你所看到的,我正在努力解决这个问题,我知道这不会那么容易。有什么建议吗
非常感谢你的智慧 试试这个:
NSString *str = @"2525";
const char *s = [str cStringUsingEncoding:NSASCIIStringEncoding];
size_t len = strlen(s);
NSMutableString *asciiCodes = [NSMutableString string];
for (int i = 0; i < len; i++) {
[asciiCodes appendFormat:@"%04x", (int)s[i]];
}
NSLog(@"%@", asciiCodes);
NSString*str=@“2525”;
const char*s=[str cStringUsingEncoding:NSASCIIStringEncoding];
尺寸长度=标准长度;
NSMutableString*ASCICODES=[NSMutableString];
对于(int i=0;i
试试这个:
NSString *str = @"2525";
const char *s = [str cStringUsingEncoding:NSASCIIStringEncoding];
size_t len = strlen(s);
NSMutableString *asciiCodes = [NSMutableString string];
for (int i = 0; i < len; i++) {
[asciiCodes appendFormat:@"%04x", (int)s[i]];
}
NSLog(@"%@", asciiCodes);
NSString*str=@“2525”;
const char*s=[str cStringUsingEncoding:NSASCIIStringEncoding];
尺寸长度=标准长度;
NSMutableString*ASCICODES=[NSMutableString];
对于(int i=0;i
基本上,您需要将字符串的ASCII或UTF8表示形式转换为十六进制。我不知道iOS中有一个用于长字符串的“罐装”十六进制转换器。(或者是吗?当您拥有十六进制时,您打算如何处理它?0032
是字符2
的2字节ASCII值,而不是8字节。8字节的十六进制应该是00000000000000 32
。基本上,您希望将字符串的ASCII或UTF8表示形式转换为十六进制。我不知道iOS中有一个用于长字符串的“罐装”十六进制转换器。(或者是吗?当您拥有十六进制时,您打算如何处理它?0032
是字符2
的2字节ASCII值,而不是8字节。8字节的十六进制数应该是00000000000032
。这不是每个字符4个字节吗?您可能需要%02x
。最好将字符值设置为255,因为characterAtIndex返回一个16位的值。@HotLicks如果您查看OP想要的输出格式,您会发现我是对的。奇怪,但他把可怜的ASCII当作UTF-16。此外,如果它真的是ASCII,则不应有大于255的值。但不管怎样,我正在更新我的答案。是的,我知道你是对的,对不起。这是一个相当奇怪的请求(我想知道他为什么想要这样的数据)。这不是每个字符4个字节吗?您可能需要%02x
。最好将字符值设置为255,因为characterAtIndex返回一个16位的值。@HotLicks如果您查看OP想要的输出格式,您会发现我是对的。奇怪,但他把可怜的ASCII当作UTF-16。此外,如果它真的是ASCII,则不应有大于255的值。但不管怎样,我正在更新我的答案。是的,我知道你是对的,对不起。这是一个相当奇怪的请求(我想知道他为什么想要这样的数据)。