Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将NSString到NSData的移植到Android_Java_Android_Iphone_Objective C - Fatal编程技术网

Java 将NSString到NSData的移植到Android

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

我们目前正在将其中一个项目从Objective-C移植到Java

字节数据来自一个编码为字符串的服务器,我们将其转换为字节数组

[目标C]:

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
前缀。我建议创建一个像上面这样的小字符串,并将这两个字符串中的十六进制表示添加到您的帖子中。