欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;
    }