我需要一些Java程序的帮助。
我正在尝试获取包含整数的String并将其转换为更紧凑的存储格式,即将打印到文件中的几个八位字节字符。当读取文件时,它应该能够获取字符并组合它们的值以获得原始的int。有没有办法做到这一点?或者我误解了什么?
答案 0 :(得分:1)
使用Integer.toOctalString(Integer.parseInt([String Value]))
。这将为您提供八进制字符串。
要获取整数,请使用Integer.parseInt([Octal string],8);
答案 1 :(得分:0)
尝试
Integer.valueOf(yourstring)
答案 2 :(得分:0)
您可以使用
public static String toHexString(int i)
和
public static int parseInt(String s, int radix)
以16的基数作为将字符串“压缩”为十六进制的方式。
或者,如果文件是二进制文件,则可以对整数本身使用序列化方法。
答案 3 :(得分:0)
将字符串转换为int使用
int i = Integer.parseInt(String)
将int
保存到文件的最紧凑方式是二进制表示
java.io.DataOutputStream.writeInt(i);
将其读回
int i = java.io.DataInputStream.readInt();
答案 4 :(得分:0)
所以你有一个真正包含int的字符串" 12345"并且你想在文件中紧凑地编写它。
首先,将字符串转换为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]
}
}