Tag: 字节输入

这个Java ByteBuffer的行为有解释吗?

我需要将数值转换为字节数组。 例如,要将long转换为byte数组,我有以下方法: public static byte[] longToBytes(long l) { ByteBuffer buff = ByteBuffer.allocate(8); buff.order(ByteOrder.BIG_ENDIAN); buff.putLong(l); return buff.array(); } 这很简单 – 花一点时间,分配一个可以容纳它的数组,并把它放在那里。 无论l的值是什么,我都会得到一个8字节的数组,然后我可以按照预期进行处理和使用。 就我而言,我正在创建一个自定义二进制格式,然后通过网络传输它。 当我使用值773450364调用此方法时,我得到一个数组[0 0 0 0 46 25 -22 124] 。 我有代码也将字节数组转换回它们的数值: public static Long bytesToLong(byte[] aBytes, int start) { byte[] b = new byte[8]; b[0] = aBytes[start + 0]; b[1] = aBytes[start + 1]; […]

当某些字节错误时,BitmapFactory.decodeStream(inputStream)始终返回null

我正在构建一个Android应用程序,我目前无法从URL中检索位图。 这是我正在使用的代码: public static Bitmap bmpFromURL(URL imageURL){ Bitmap result = null; try { HttpURLConnection connection = (HttpURLConnection)imageURL .openConnection(); connection.setDoInput(true); connection.connect(); InputStream input = connection.getInputStream(); result = BitmapFactory.decodeStream(input); } catch (IOException e) { e.printStackTrace(); } return result; } 当图片写入时,一切正常,但是当某些字节错误时,结果为空。 我认为这基本上是可以预期的,因为它是在BitmapFactory.decodeStream的文档中写的: 如果输入流为空,或者不能用于解码位图,则该函数返回null。 流的位置将是读取编码数据后的位置。 问题是,我的错误图片很好地解释了我的网络浏览器,我可以在iPhone平台上这样做。 有没有办法忽略那些错误的像素? 也许有选项参数? 任何帮助赞赏 罗曼

Java – 如何从inputStream(socket / socketServer)读取未知数量的字节?

希望使用inputStream在套接字上读取一些字节。 服务器发送的字节可以是可变数量的,并且客户端事先不知道字节数组的长度。 怎么可能完成? byte b[]; sock.getInputStream().read(b); 这会导致Net BzEAnSZ出现“可能未初始化错误”。 帮帮我。