Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java BufferWriter不转换383以上的整数_Java_Bytearray_Byte_Bufferedwriter - Fatal编程技术网

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。