【发布时间】:2013-03-04 18:29:45
【问题描述】:
我需要一些关于 Java 程序的帮助。
我正在尝试获取包含整数的字符串并将其转换为更紧凑的存储格式,即将打印到文件中的几个八位字节字符。读取文件时,它应该能够获取字符并组合它们的值以获取原始 int。有没有办法做到这一点?还是我误会了什么?
【问题讨论】:
我需要一些关于 Java 程序的帮助。
我正在尝试获取包含整数的字符串并将其转换为更紧凑的存储格式,即将打印到文件中的几个八位字节字符。读取文件时,它应该能够获取字符并组合它们的值以获取原始 int。有没有办法做到这一点?还是我误会了什么?
【问题讨论】:
使用Integer.toOctalString(Integer.parseInt([String Value]))。这会给你一个八进制字符串。
要取回整数,请使用Integer.parseInt([Octal string],8);
【讨论】:
所以你有一个真正包含像“12345”这样的int的字符串,你想把它紧凑地写在一个文件中。
首先,将字符串转换为 int:
int value = Integer.valueOf(string);
然后你要么将其转换为带有 ByteBuffer 的字节数组:
ByteBuffer b = ByteBuffer.allocate(4);
b.putInt(value);
byte[] result = b.array();
或者你只是把它写在一个文件中:
FileOutputStream fos = new FileOutputStream(f);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeInt(value);
编辑:既然你还有困难,这里是一个完整的例子:
public class Snippet {
public static void main(String[] args) {
int value = Integer.parseInt("1234567890");
ByteBuffer b = ByteBuffer.allocate(4);
b.putInt(value);
byte[] result = b.array();
System.out.println(result.length); // 4
System.out.println(Arrays.toString(result)); // [73, -106, 2, -46]
}
}
【讨论】:
试试
Integer.valueOf(yourstring)
【讨论】:
你可以使用
public static String toHexString(int i)
和
public static int parseInt(String s, int radix)
以 16 为基数作为将字符串“压缩”为十六进制的一种方式。
如果文件是二进制文件,您也可以只对整数本身使用序列化方法。
【讨论】:
将字符串转换为 int 使用
int i = Integer.parseInt(String)
将int 保存到文件的最简洁方式是二进制表示
java.io.DataOutputStream.writeInt(i);
把它读回来
int i = java.io.DataInputStream.readInt();
【讨论】: