Java 将NSString到NSData的移植到Android
我们目前正在将其中一个项目从Objective-C移植到Java 字节数据来自一个编码为字符串的服务器,我们将其转换为字节数组 [目标C]:Java 将NSString到NSData的移植到Android,java,android,iphone,objective-c,Java,Android,Iphone,Objective C,我们目前正在将其中一个项目从Objective-C移植到Java 字节数据来自一个编码为字符串的服务器,我们将其转换为字节数组 [目标C]: NSString * imageString = @"abcde......"; //quite a long string NSData * imageData = [imageString dataUsingEncoding:NSUnicodeStringEncoding]; constant Byte * imageBytes = [imageDat
NSString * imageString = @"abcde......"; //quite a long string
NSData * imageData = [imageString dataUsingEncoding:NSUnicodeStringEncoding];
constant Byte * imageBytes = [imageData bytes];
现在,我正试图在Android上做同样的事情
[爪哇]:
String imageString = "abcde......"; //quite a long string
byte [] imageBytes = imageString.getData("UTF-16");
但是,如果比较第一个片段和第二个片段中的imageBytes数组,它们是不同的。我推测这与我在Java案例中使用的UTF-16编码有关(我想没有“Unicode”这样的选项)
有什么解决办法吗?试试UTF-8编码。。。对于将是
NSUTF8StringEncoding
的iOS,这可能是一个endian问题,默认情况下,iphone会将其编码为小endian。这将包括一个字节顺序标记,Java代码应该能够正确读取和显示该标记。但是,您可以尝试[imageString dataUsingEncoding:NSUTF16BigEndianStringEncoding]代码>这将不包括字节顺序标记,因此您将缺少FEFF
前缀。我建议创建一个像上面这样的小字符串,并将这两个字符串中的十六进制表示添加到您的帖子中。