Objective c 将NSString中的文本转换为它';s 8字节ASCII十六进制等效值,并存储回NSString

Objective 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

我想将NSString
@“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的值。但不管怎样,我正在更新我的答案。是的,我知道你是对的,对不起。这是一个相当奇怪的请求(我想知道他为什么想要这样的数据)。