top / index / prev / next / target / source
日記形式でつづる いがぴょんコラム ウェブページです。
某文字化け記事のために基礎情報を作成中…。
ISO/IEC 646 範囲をファイルに出力するサンプルを書きました。
まずはユーティリティを作成しました。内容がら、この手のダンプユーティリティが必要になります。 HexStringUtil.java
/**
* 16進表記文字列のためのユーティリティ。
*
* byte を 文字列化するための各種ユーティリティが含まれます。
*
* @version 2007.06.01
* @author 伊賀敏樹
*/
public final class HexStringUtil {
/**
* 与えられたバイト配列を16進表記の文字列に変換します。
*
* 2バイト目以降には、前のバイトとの区切りのために半角空白を付与します。
*
* 変換例。入力:[愛植岡]のShift_JIS化バイト配列 → 出力:[88 a4 90 41 89 aa]
*
* @param argBytes
* バイト配列。
* @return 16進表記の文字列。
*/
public static String bytesToHexString(final byte[] argBytes) {
final StringBuffer buffer = new StringBuffer();
for (int byteIndex = 0; byteIndex < argBytes.length; byteIndex++) {
if (byteIndex != 0) {
// 2バイト目以降には半角空白を区切り文字として付与。
buffer.append(' ');
}
buffer.append(byteToHexString(argBytes[byteIndex]));
}
return buffer.toString();
}
/**
* 与えられたバイトを16進表記の文字列に変換します。
*
* 必ず2文字が戻ります。
*
* @param argByte
* バイト値。
* @return 16進表記の文字列。
*/
public static String byteToHexString(final byte argByte) {
int wrkValue = argByte;
if (wrkValue < 0) {
// 負の値の場合には正の値に変換します。
wrkValue += 0x100;
}
String result = Integer.toHexString(wrkValue);
if (result.length() < 2) {
// 1文字の場合には 0 の文字を加えて 2文字になるようにします。
result = "0" + result;
}
return result;
}
}
こちらが本体。 ListIso646.java
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
/**
* ISO/IEC 646 範囲をファイルに出力するサンプル。
*
* @version 2007.06.02
* @author 伊賀敏樹
*/
public class ListIso646 {
public static void main(final String[] args) {
try {
new ListIso646().process();
} catch (IOException ex) {
System.out.println("入出力例外[" + ex.toString() + "]が発生しました。");
ex.printStackTrace();
}
}
public void process() throws IOException {
OutputStream outStream = null;
try {
outStream = new BufferedOutputStream(new FileOutputStream(
"ListIso646.txt"));
outStream.write("●ISO/IEC 646 範囲。0x20から0x7eまで。".getBytes());
// Windowsと仮定して改行コードを出力。
outStream.write(0x0d);
outStream.write(0x0a);
for (int codeLoop = 0x20; codeLoop <= 0x7e; codeLoop++) {
// 数値を直接ストリームに出力。
outStream.write(codeLoop);
// 文字コードの値を読める形で出力。
outStream.write((": " + HexStringUtil
.byteToHexString((byte) codeLoop))
.getBytes("Shift_JIS"));
// Windowsと仮定して改行コードを出力。
outStream.write(0x0d);
outStream.write(0x0a);
}
} finally {
if (outStream != null) {
outStream.flush();
outStream.close();
}
}
}
}
実行結果
●ISO/IEC 646 範囲。0x20から0x7eまで。
: 20
!: 21
": 22
#: 23
$: 24
%: 25&: 26
': 27
(: 28
): 29
*: 2a
+: 2b
,: 2c
-: 2d
.: 2e
/: 2f
0: 30
1: 31
2: 32
3: 33
4: 34
5: 35
6: 36
7: 37
8: 38
9: 39
:: 3a
;: 3b<: 3c
=: 3d>: 3e
?: 3f
@: 40
A: 41
B: 42
C: 43
D: 44
E: 45
F: 46
G: 47
H: 48
I: 49
J: 4a
K: 4b
L: 4c
M: 4d
N: 4e
O: 4f
P: 50
Q: 51
R: 52
S: 53
T: 54
U: 55
V: 56
W: 57
X: 58
Y: 59
Z: 5a
[: 5b
\: 5c
]: 5d
^: 5e
_: 5f
`: 60
a: 61
b: 62
c: 63
d: 64
e: 65
f: 66
g: 67
h: 68
i: 69
j: 6a
k: 6b
l: 6c
m: 6d
n: 6e
o: 6f
p: 70
q: 71
r: 72
s: 73
t: 74
u: 75
v: 76
w: 77
x: 78
y: 79
z: 7a
{: 7b
|: 7c
}: 7d
~: 7e
本を探して、それを読んで、を繰り返し中。文字化け記事、難易度高いです。