vonvertion

本文介绍如何将二进制文件'data.bin'中的浮点数读取到JAVA的float数组中。通过使用FileInputStream和DataInputStream进行文件读取,并提供了一系列转换函数,如arr2float等,用于将字节数组转换为float、double、long和int类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 Given you have a file "data.bin" consisting of float numbers with 4 bytes each and you want to read them into a JAVA float array.
You read the file, convert the numbers and write them in a float[] array:

float[] myarray = new float[100000];
try {
   File file = new File("data.bin");
   InputStream is = new FileInputStream(file);
   DataInputStream dis = new DataInputStream( is );
   long length = file.length();
   if (length > Integer.MAX_VALUE) {
      throw new IOException("File is too large");
   } else {
      byte[] bytes = new byte[(int)length];
      int offset = 0;
      int numRead = 0;
      while (offset < bytes.length && 
         (numRead = is.read(bytes, offset, bytes.length-offset) ) >= 0) {
         offset += numRead;
      }
      if (offset < bytes.length) {
         throw new IOException("Could not completely read file "+file.getName());
      }
      dis.close();
      is.close();
      System.out.println("offset="+offset);

      for (int start = 0; start < offset; start = start + 4) {
         myarray[cnt] = arr2float(bytes, start);
         cnt++;
      }
   }
} catch (Exception e) {
   e.printStackTrace();
}
Here are the functions for converting binary bytes to double, long, int or float 

Function for conversion of an 8 byte array to double:
	public static double arr2double (byte[] arr, int start) {
		int i = 0;
		int len = 8;
		int cnt = 0;
		byte[] tmp = new byte[len];
		for (i = start; i < (start + len); i++) {
			tmp[cnt] = arr[i];
			//System.out.println(java.lang.Byte.toString(arr[i]) + " " + i);
			cnt++;
		}
		long accum = 0;
		i = 0;
		for ( int shiftBy = 0; shiftBy < 64; shiftBy += 8 ) {
			accum |= ( (long)( tmp[i] & 0xff ) ) << shiftBy;
			i++;
		}
		return Double.longBitsToDouble(accum);
	}
Function for conversion of an 4 byte array to long: 
	public static long arr2long (byte[] arr, int start) {
		int i = 0;
		int len = 4;
		int cnt = 0;
		byte[] tmp = new byte[len];
		for (i = start; i < (start + len); i++) {
			tmp[cnt] = arr[i];
			cnt++;
		}
		long accum = 0;
		i = 0;
		for ( int shiftBy = 0; shiftBy < 32; shiftBy += 8 ) {
			accum |= ( (long)( tmp[i] & 0xff ) ) << shiftBy;
			i++;
		}
		return accum;
	}

Function for conversion of an 2 byte array to int:
	public static int arr2int (byte[] arr, int start) {
		int low = arr[start] & 0xff;
		int high = arr[start+1] & 0xff;
		return (int)( high << 8 | low );
	}
Function for conversion of an 4 byte array to a float: 
	public static float arr2float (byte[] arr, int start) {
		int i = 0;
		int len = 4;
		int cnt = 0;
		byte[] tmp = new byte[len];
		for (i = start; i < (start + len); i++) {
			tmp[cnt] = arr[i];
			cnt++;
		}
		int accum = 0;
		i = 0;
		for ( int shiftBy = 0; shiftBy < 32; shiftBy += 8 ) {
			accum |= ( (long)( tmp[i] & 0xff ) ) << shiftBy;
			i++;
		}
		return Float.intBitsToFloat(accum);
	}
资源下载链接为: https://pan.quark.cn/s/abbae039bf2a 在Java开发中,SFTP(Secure File Transfer Protocol)是一种用于安全地在本地计算机与远程服务器之间传输文件的协议。Swing是Java提供的一个GUI工具包,用于构建桌面应用程序。本文将介绍如何结合Java Swing和JSch库实现SFTP文件夹上传功能,并为后续支持多目标地址上传做好准备。 JSch是一个纯Java实现的SSH2库,可以用来连接SSH服务器,执行命令以及通过SFTP传输文件。在项目中需要引入JSch库,例如通过Maven依赖: 接下来,创建一个基于Swing的界面,包含输入框用于输入用户名、密码、主机名和端口号,以及一个按钮用于触发文件或文件夹的上传操作。以下是Swing界面的基本框架: 为了实现SFTP文件上传功能,需要编写一个uploadFileOrFolder()方法,该方法接收文件或文件夹路径、用户名、密码、主机名和端口号等参数。在该方法中,使用JSch建立SSH连接,并通过SFTP通道上传文件或文件夹: 在Swing界面中,当用户点击上传按钮时,调用uploadFileOrFolder()方法,并传入用户输入的参数: 为了支持多目标地址上传,可以扩展功能,例如在Swing界面中增加一个文本区域让用户输入多个目标地址,然后在上传按钮的事件处理器中遍历这些地址并分别上传文件或文件夹。 以上就是使用Java Swing结合JSch库实现SFTP文件夹上传功能的完整步骤。在实际生产环境中,建议添加更完善的异常处理和错误提示,并采用更安全的身份验证方式,如密钥对认证,以提高安全性。
资源下载链接为: https://pan.quark.cn/s/f989b9092fc5 在 Windows 7 旗舰版系统中,用户在安装 Allegro 库或依赖于 Microsoft Visual C++ 2005 运行时库的软件时,常会遇到“应用程序无法启动,因为应用程序的并行配置不正确”的错误。这通常是由于系统中缺失或损坏了 C++ 2005 运行时组件所致。Microsoft Visual C++ Redistributable 是微软为开发者提供的关键组件,包含运行基于 C++ 开发的应用程序所需的运行时库,如 msvcr80.dll 等动态链接库,这些库负责处理内存管理、异常处理、输入输出等基础功能。当系统中缺少或损坏了这些运行时库时,就会导致上述错误。 为解决此问题,可使用“Microsoft Visual C++ Redistributable Setup.exe”修复工具。在安装前,建议先更新系统至最新状态,因为部分安全更新可能包含对旧版 C++ 运行时的支持修复。同时,关闭所有正在运行的应用程序,避免安装过程中出现冲突。之后,双击“Microsoft Visual C++ Redistributable Setup.exe”启动安装程序,安装向导会引导用户完成包括接受许可协议、选择安装位置等步骤的安装过程。安装程序会自动检测并修复或替换系统中已损坏的 C++ 2005 运行时组件。安装完成后,重启计算机使更改生效,此时一般可正常启动并运行之前报错的应用程序。若 Allegro 仍无法正常工作,则需检查其他可能原因,如兼容性问题、驱动问题或应用程序本身故障等。 总之,修复或重新安装 Microsoft Visual C++ 2005 运行时环境是解决“应用程序无法启动,因为应用程序的并行配置不正确”问题的关键。通过使用“Microsoft Visual
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值