无法弄清楚这些C#和Java代码的不同之处
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了无法弄清楚这些C#和Java代码的不同之处,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1255字,纯文字阅读大概需要2分钟。
内容图文
![无法弄清楚这些C#和Java代码的不同之处](/upload/InfoBanner/zyjiaocheng/744/bf91f3097c8c4936ab950b5f1d6b9860.jpg)
我有一些C#代码将图像转换为base64字符串.代码是:
MemoryStream ms = new MemoryStream();
Image img = Image.FromFile(filename);
img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
string s = Convert.ToBase64String(ms.GetBuffer());
我试图用JAVA实现它.我的java代码是:
BufferedImage img = null;
img = ImageIO.read(new File(filename));
byte[] bytes = ((DataBufferByte)img.getData().getDataBuffer()).getData();
String js = Base64.encodeBase64String(bytes);
这两段代码应为同一图像文件返回相同的字符串.但他们正在返回不同的字符串.我无法弄清楚原因.任何人都可以对此有所了解吗?
解决方法:
this two piece of code should return the same string for the same image file
不,他们真的不应该.
C#代码返回图像数据的JPEG编码版本的base64表示 – 最后可能会返回0,因为您使用的是GetBuffer而不是ToArray. (你想在这里ToArray.)
Java代码根据其SampleModel返回原始栅格数据的base64表示.我希望它比C#代码返回的字符串大得多.
即使两段代码都使用相同的格式对图像进行编码,这并不意味着它们会提供完全相同的数据 – 这取决于编码.
重要的是,如果您只想要“base64中文件的内容”,那么您根本不需要通过图像.例如,在C#中你可以使用:
string base64 = Convert.ToBase64String(File.ReadAllBytes(filename));
事实上它是一个图像在这方面是无关紧要的 – 文件只是一个字节的集合,你可以在不理解这些字节含义的情况下对其进行base64编码.
内容总结
以上是互联网集市为您收集整理的无法弄清楚这些C#和Java代码的不同之处全部内容,希望文章能够帮你解决无法弄清楚这些C#和Java代码的不同之处所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。