C#二进制图片转Java的问题
程序员文章站
2022-04-15 11:29:31
...
最近在处理一个图片需求时,碰到了一个小问题。由于图片是通过字节数组从C#传到java的,而C#的byte是没有符号位的,从0到255,java的则有符号位的,从-128~127。这样在从c#传递到java的时候,就会出现字节大小过长的问题。
在此之间,曾想过用截取或者运算的方法获取,均以失败告终。最后,转念一想,其实对于机器而言,既然C#和java的byte都是8位,而且都是二进制的,那么不管他们的十进制在c#和java里的值是多少,只要他们的8位二进制一样,实际上这两个数字是一致的。
这样一想,问题就简单多了。为了保障能正确接收C#传过来的字节数组,我用int数组接收。成功接收后,我再把int数组强制转化为byte数组,就大功告成了。虽然强制转化会丢失精度,但是实际上我们也只要int的前8位(也就是从c#接收的byte)就可以了。这样接收后,就成功把将C#生成的图片二进制转化成java的图片二进制了,最后,再将二进制转化成图片就可以了。附上转化为图片较为粗略的代码:
public static String byteToImage(byte[] byte1) { String fileName = System.currentTimeMillis()+ ".jpg"; try { File filePic = new File(“E://”+fileName); if(!filePic.getParentFile().isDirectory()){ (new File(filePic.getParent())).mkdirs(); } FileOutputStream fos =new FileOutputStream(filePic); fos.write(byte1); fos.flush(); fos.close(); } catch (IOException e) { e.printStackTrace(); } return fileName; }
上一篇: php根据生日计算年龄的方法
下一篇: Java数组、list的转化合并