import sun.nio.cs.ext.*; public class Sjis2Jis { public static void main(String[] args) throws Throwable { int sjis = Integer.parseInt(args[0], 16); int c1 = (sjis >> 8) & 0xff; int c2 = sjis & 0xff; int adjust = c2 < 0x9F ? 1 : 0; int rowOffset = c1 < 0xA0 ? 0x70 : 0xB0; int cellOffset = (adjust == 1) ? (c2 > 0x7F ? 0x20 : 0x1F) : 0x7E; int b1 = ((c1 - rowOffset) << 1) - adjust; int b2 = c2 - cellOffset; System.out.printf("0x%04x -> %x, %x%n", sjis, b1, b2); byte[] b_sjis = new byte[] {(byte)c1, (byte)c2}; String s = new String(b_sjis, "SJIS"); System.out.printf("0x%04x -> %04x%n", sjis, s.length() > 0 ? s.charAt(0) & 0xffff : 0x3f); } }