将十六进制字符串转换为 NSData

发布于 2024-09-19 11:18:37 字数 403 浏览 6 评论 0原文

如何转换十六进制格式的字符串以从中检索 NSData,然后在我的 iPhone 应用程序中检索 UIImage?

我有一个字符串 (str),其中包含类似 X'FFD8FFE000104A46....01010000010001000' 的值。

该字符串是通过以下方法从 xml 文件创建的:

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
     str = [str stringByAppendingString:string];
}

How can I get the image back from that string?

预先感谢,

安德里亚

How can I convert a string in hex format to retrieve from it an NSData and after that an UIImage inside of my iPhone app?

I've got a string (str) that contains a value like X'FFD8FFE000104A46....01010000010001000'.

That string is created from a xml file by the method:

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
     str = [str stringByAppendingString:string];
}

How can I get the image back from that string?

Thanks in advance,

Andrea

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

┊风居住的梦幻卍 2024-09-26 11:18:37

要将 NSData 转换为 NSString,请尝试“initWithData:encoding:”

将 NSData 转换为 UIImage,请尝试“imageWithData:”

For converting NSData to a NSString, try "initWithData:encoding:"

For converting NSData to an UIImage, try "imageWithData:"

戴着白色围巾的女孩 2024-09-26 11:18:37

You may find GTMStringEncoding helpful, from Google Toolbox For Mac.

眼睛会笑 2024-09-26 11:18:37

我的示例代码,已更新!

   -(NSData*)toString:(NSString*)uniStr
{
    int len=[uniStr length]/4;
    unichar *oux=alloca(len*sizeof(unichar));
    unichar *p = oux;

    for (int i=0; i<[uniStr length]/4; i++) {


        NSInteger first= i*4;
        NSUInteger a =toInde([uniStr characterAtIndex:first])<<4;//3 3c
        NSUInteger b =toInde([uniStr characterAtIndex:(first+1)]);//2
        NSUInteger c =toInde([uniStr characterAtIndex:(first+2)])<<12 ;//0 68
        NSUInteger d =toInde([uniStr characterAtIndex:(first+3)])<<8;//0

        unichar x = a+b+c+d;//十进制 3c68->683c
        memcpy(p, &x, 2);
        p++;

    }

    return [NSData dataWithBytes:oux length:len*2];
}

int toInde(int x)
{

    char b=0;
    sprintf(&b, "%c",a);
    return b;
}

my sample code , updated!

   -(NSData*)toString:(NSString*)uniStr
{
    int len=[uniStr length]/4;
    unichar *oux=alloca(len*sizeof(unichar));
    unichar *p = oux;

    for (int i=0; i<[uniStr length]/4; i++) {


        NSInteger first= i*4;
        NSUInteger a =toInde([uniStr characterAtIndex:first])<<4;//3 3c
        NSUInteger b =toInde([uniStr characterAtIndex:(first+1)]);//2
        NSUInteger c =toInde([uniStr characterAtIndex:(first+2)])<<12 ;//0 68
        NSUInteger d =toInde([uniStr characterAtIndex:(first+3)])<<8;//0

        unichar x = a+b+c+d;//十进制 3c68->683c
        memcpy(p, &x, 2);
        p++;

    }

    return [NSData dataWithBytes:oux length:len*2];
}

int toInde(int x)
{

    char b=0;
    sprintf(&b, "%c",a);
    return b;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文