最近在处理一个图片需求时,碰到了一个小问题。由于图片是通过字节数组从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;
}
分享到:
相关推荐
1. **连接数据库**:使用合适的数据库驱动(例如Java的JDBC,Python的psycopg2等)连接到数据库,获取存储图片的二进制字段。你需要知道数据库的URL、用户名、密码以及查询图片的SQL语句。 2. **读取二进制流**:...
在Java编程语言中,将十进制数转换为二进制、八进制或十六进制是常见的数据处理任务,尤其是在计算机科学与信息技术领域。本文将深入探讨如何使用Java实现这些转换,包括算法原理和具体代码实现。 ### 十进制转二...
总的来说,16进制图片转换是一项涉及图像处理、二进制数据操作和文件格式理解的技术。它在软件开发、数据分析以及某些形式的图像加密和传输中都有应用。对于学习者来说,掌握这些概念有助于深入理解计算机如何存储和...
当涉及到存储非结构化数据,如图片时,通常会以二进制大对象(BLOB)的形式来处理。本文将深入探讨如何在SQL Server 2008和Oracle数据库中保存和读取图片的二进制流。 1. **二进制流**:二进制流是一种数据表示方式...
"将图片存放进数据库(转换成二进制流)"这个主题,就是关于如何将图像文件以二进制形式存储到数据库中,然后从数据库中读取并以流的形式展示出来。下面我们将深入探讨这一技术。 首先,我们需要理解什么是二进制流...
标题中的“blob,将byte二进制转成pdf”指的是在IT领域中处理二进制数据(Blob)并将其转换为PDF文档的过程。Blob在计算机科学中通常代表Binary Large Object,用于存储大块非结构化的数据,如图像、音频、视频或者在...
文本字符串与byte[], 整个物理文件与byte[], 物理文件内容与byte[], stream与byty[] 之间的相互转换。 从磁盘读取文件,将文件写入磁盘。
将图片转换为字节数组是将图片数据编码成二进制形式的过程。这在需要在网络上传输图片或者存储到数据库时非常有用。转换过程包括读取图片文件,然后逐字节读取其内容。例如,Java中可以使用`Files.readAllBytes()`...
1. **读取图片文件**:使用编程语言(如Java、Python、C#)的内置函数读取图片文件,将其转换为二进制数据流。 2. **连接数据库**:建立与数据库的连接,这通常需要数据库驱动程序(如JDBC、ODBC)和正确的连接参数...
二进制流是指一系列连续的二进制数据,它可以是任何类型的数据,如图片、音频、视频或文本文件等。在C#中,System.IO命名空间提供了一系列类来处理二进制流,如FileStream、MemoryStream和NetworkStream等。 **文件...
让你轻松搞定word到二进制流的转换,你值得拥有的技术,总会用到的,看见了就收藏一下吧
本文档将深入探讨C#中的二进制处理,特别是如何在二进制数组和结构体之间进行转换。这在诸如网络通信、文件读写、序列化等场景下特别有用。 二进制数组(byte数组)是存储原始二进制数据的基本数据结构。在C#中,`...
1. **读取图片数据**:通常,图片的二进制数据可以通过编程语言(如Python、C#或Java)读取,然后转换为字节流。例如,Python的`PIL`库可以打开图片并将其转化为字节对象。 2. **连接数据库**:使用SQL Server的...
本话题将深入探讨如何在SQL Server中操作二进制文件,并使用C#编程语言进行导出。 首先,SQL Server中的二进制数据通常存储在`VARBINARY(MAX)`或`BLOB`(Binary Large Object)类型的列中。这类字段设计用来容纳...
在实际应用中,存储和处理二进制数据是常见的需求,比如图片、音频、视频的元数据或者数据库的BLOB字段等。本文将深入探讨如何在Redis中存储和操作二进制数据,并通过测试代码来展示具体实现。 首先,Redis中的`SET...
1. **二进制文件的结构**:二进制文件的结构通常由其特定的格式定义,比如JPEG图片文件包含了图像的压缩数据,而.exe可执行文件则包含机器语言指令和元数据。不同的文件类型有各自的头标、数据区和可能的尾部信息,...
为了方便在文本格式下传输和查看加密后的数据,通常会将二进制数据转换为16进制字符串。在C#中,可以使用`BitConverter.ToString()`方法,然后将中间的破折号去掉,得到无间隔的16进制字符串。在Java中,可以使用`...
IEEE754标准是一个全球广泛采用的浮点数表示法,它定义了如何用二进制形式来存储、运算和交换浮点数。这个标准对于理解和转换不同进制之间的浮点数至关重要。本篇文章将深入探讨基于IEEE754标准将十六进制转换为十...
然而,随着Java平台的普及和跨平台优势的凸显,开发者决定将CE二进制运算器移植到Java平台上。Java以其“一次编写,到处运行”的特性,能够运行在不同的操作系统上,这将扩大CE二进制运算器的适用范围,使其用户群体...
本文将深入探讨如何从SQL数据库中读取存储的二进制图片,并将其转换为可本地查看的文件。 首先,我们需要了解在SQL数据库中存储二进制数据的基本概念。通常,我们会使用BLOB(Binary Large Object)类型来存储图片...