Java プログラムのヘルプが必要です。
整数を含む文字列を取り、それをよりコンパクトなストレージ形式、つまりファイルに出力されるいくつかのオクテット文字に変換しようとしています。ファイルが読み取られると、文字を取得し、それらの値を組み合わせて元の int を取得できるはずです。これを行う方法はありますか?それとも私は何かを誤解していますか?
を使用しInteger.toOctalString(Integer.parseInt([String Value]))
ます。これにより、8進数の文字列が得られます。整数を取り戻すには、次を使用しますInteger.parseInt([Octal string],8);
あなたが使うことができます
public static String toHexString(int i)
と
public static int parseInt(String s, int radix)
文字列を16進数に「圧縮」する方法として、基数16を使用します。
または、ファイルが2進数の場合は、整数自体にシリアル化メソッドを使用することもできます。
試す
Integer.valueOf(yourstring)
文字列を 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]
}
}