我在 iOS 应用程序中使用协议缓冲区。该应用程序使用一个用 Java 编写的 Web 服务,该服务返回一个 base64 编码的字符串。
base64 字符串两端相同。
然而,在应用程序中,每当我尝试将字符串转换为 NSData 时,两端的字节数可能相同也可能不同。结果是可能的无效协议缓冲区异常,无效结束标记。
例如:
Source(bytes) | NSData | Diff
93 93 0
6739 6735 -4
5745 5739 -6
在空协议缓冲区的普通情况下,字节是相等的。
这是Java源代码:
import org.apache.commons.codec.binary.Base64;
....
public static String bytesToBase64(byte[] bytes) {
return Base64.encodeBase64String(bytes);
}
在 iOS 方面,我尝试了来自类似问题的各种算法,这些算法在字节大小和内容上都一致。
这可能是什么原因造成的?