Java BufferWriter不转换383以上的整数
我正在尝试将数字转换为字节数组形式。有一个简单的技巧是这样的:Java BufferWriter不转换383以上的整数,java,bytearray,byte,bufferedwriter,Java,Bytearray,Byte,Bufferedwriter,我正在尝试将数字转换为字节数组形式。有一个简单的技巧是这样的: int input = number; byte[] bytes = ByteBuffer.allocate(4).putInt(input).array(); for(int i = 0 ; i < bytes.length ; i++) System.out.println(bytes[i]); int输入=数字; byte[]bytes=ByteBuffer.allocate(4).p
int input = number;
byte[] bytes = ByteBuffer.allocate(4).putInt(input).array();
for(int i = 0 ; i < bytes.length ; i++)
System.out.println(bytes[i]);
int输入=数字;
byte[]bytes=ByteBuffer.allocate(4).putInt(input.array();
for(int i=0;i
其工作原理类似于一个符咒,除非我超过整数值383(字节:0 0 1 127),否则在将其写入文件时,它会自动生成整数值319(字节:0 0 1 63)的数组:
BufferedWriter out;
for(int i = 0 ; i < input.length ; i++)
out.write(input[i]);
BufferedWriter out;
for(int i=0;i
有解决方案吗?对于384,我得到[0,0,1,-128](我相信这是正确的字节模式:0x00 0x00 0x01 0x80)。什么输入给了你[0,0,1,63]?我不知道你是怎么得出这个答案的。当我试图执行时,我得到了字节:(0 1-128)用于值384,字节:(0 1-127)用于值385等等,这是合理的,因为负值表示2的补语被设置。任何高于383的值,包括384本身。如果可能的话,我使用的是Java 1.7 64位。听起来像是读取或写入负字节值到文件中的问题,而不是
ByteBuffer
的问题。BufferedWriter用于写入文本,而不是二进制。您可以改用DataOutputStream。