我需要一些有关 Java 程序的帮助。
我正在尝试获取一个包含整数的字符串并将其转换为更紧凑的存储格式,即将打印到文件中的几个八位字节字符。读取文件时,它应该能够获取字符并组合它们的值以获取原始 int 。有没有办法做到这一点?还是我误解了什么?
使用Integer.toOctalString(Integer.parseInt([String Value]))
. 这会给你一个八进制字符串。要取回整数,请使用Integer.parseInt([Octal string],8);
尝试
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();
所以你有一个真正包含像“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]
}
}