gpt4 book ai didi

objective-c - 将 NSData 字节数组转换为字符串?

转载 作者:太空狗 更新时间:2023-10-30 03:28:04 25 4
gpt4 key购买 nike

我有一个 NSData 对象。我需要将其字节转换为字符串并作为 JSON 发送。 description 返回十六进制并且不可靠(根据各种 SO 海报)。所以我正在看这样的代码:

NSUInteger len = [imageData length];
Byte *byteData = (Byte*)malloc(len);
[imageData getBytes:&byteData length:len];

然后如何将 byteData 作为 JSON 发送?我想发送原始字节。

代码:

NSString *jsonBase64 = [imageData base64EncodedString];
NSLog(@"BASE 64 FINGERPRINT: %@", jsonBase64);
NSData *b64 = [NSData dataFromBase64String:jsonBase64];
NSLog(@"Equal: %d", [imageData isEqualToData:b64]);
NSLog(@"b64: %@", b64);
NSLog(@"original: %@", imageData);
NSString *decoded = [[NSString alloc] initWithData:b64 encoding:NSUTF8StringEncoding];
NSLog(@"decoded: %@", decoded);

除了最后一行 - decoded,我得到了所有的值。这会向我表明原始字节未在 NSUTF8encoding 中格式化?

最佳答案

  1. 字符串在之前的 Stack 帖子中被认为“不可靠”的原因是因为他们也试图使用 NSData 对象,其中结束字节未正确终止 :

    NSString *jsonString = [NSString stringWithUTF8String:[nsDataObj bytes]];
    // This is unreliable because it may result in NULL string values
  2. 而下面的示例应该会为您提供所需的结果,因为 NSData 字节字符串将正确终止:

    NSString *jsonString = [[NSString alloc]  initWithBytes:[nsDataObj bytes] length:[nsDataObj length] encoding: NSUTF8StringEncoding];

您走在正确的轨道上,希望这能够帮助您解决当前的问题。祝你好运!

~ 编辑~

确保你从像这样的图像中声明你的 NSData 对象:

NSData *imageData = [[NSData alloc] init];
imageData = UIImagePNGRepresentation(yourImage);

关于objective-c - 将 NSData 字节数组转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31895900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com