java将int转化为byte数组吗_java – 将int数组转换为byte数组的最有效方法是什么,反之亦然?...

我正在寻找将int数组转换为byte数组的最有效方法,反之亦然.

我想写大量的int数组和String到文件,所以我可以有效地读取它们.我认为节省空间和减少阅读时间的最佳方法是将它们存储为字节.我对吗?

我阅读了以下链接,但还有更好的方法吗?

解决方法:

在Java中,一个字节是8位,而int是32位.

要将每个整数转换为单个字节而不丢失数据,您需要确保所有数字都在-128到127之间.

如果它们在这个范围内,那么你应该首先将它们存储为字节(如果这不可能,那么有很多方法可以进行已经讨论过的转换).

如果它们不在此范围内,那么您根本不应将它们转换为字节,因为它会强制您的数字进入范围,因此您将丢失大量数据.

或者,你可以使用short,因为它是16位(给你的范围是-32,768到32,767).

但是如果你不能确保你的数字在这些范围内,那么你将需要使用int.

注意:您可以将每个int存储为4个字节或2个短路,但每个数字仍然是32位,因此您不会通过这样做获得任何空间效率.

标签:java,arrays,int,file-io,byte

来源: https://codeday.me/bug/20190722/1506414.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是用Android写的代码,可以监听9100和9101两个端口,如果9100端口接收到信息,就会向9101端口的数据来源发送byte数组反之亦然。 ``` import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class TCPListener { private static final int PORT_1 = 9100; private static final int PORT_2 = 9101; public static void main(String[] args) { try { ServerSocket serverSocket1 = new ServerSocket(PORT_1); ServerSocket serverSocket2 = new ServerSocket(PORT_2); System.out.println("TCP listener started on ports " + PORT_1 + " and " + PORT_2); while (true) { Socket socket1 = serverSocket1.accept(); Socket socket2 = serverSocket2.accept(); System.out.println("New connection established"); new Thread(() -> { try { InputStream inputStream1 = socket1.getInputStream(); OutputStream outputStream2 = socket2.getOutputStream(); byte[] buffer = new byte[1024]; int length; while ((length = inputStream1.read(buffer)) != -1) { outputStream2.write(buffer, 0, length); outputStream2.flush(); } } catch (IOException e) { e.printStackTrace(); } }).start(); new Thread(() -> { try { InputStream inputStream2 = socket2.getInputStream(); OutputStream outputStream1 = socket1.getOutputStream(); byte[] buffer = new byte[1024]; int length; while ((length = inputStream2.read(buffer)) != -1) { outputStream1.write(buffer, 0, length); outputStream1.flush(); } } catch (IOException e) { e.printStackTrace(); } }).start(); } } catch (IOException e) { e.printStackTrace(); } } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值