±Û¾´ÀÌ :±è´öÅ 1998³â 1¿ù 20ÀÏ 20:36:56
In Reply to: ÇÑ±Û Äڵ尪 ¹®Á¦... posted by ±èÇÊÈ£ on 1998³â 1¿ù 20ÀÏ 18:03:27:
1. toHexStringÀÇ ¹®Á¦.
toHexStringÀº 0À¸·Î paddingÇØÁÖ´Â ±â´ÉÀÌ ¾ø°í,
Ç¥ÁØ API¿¡ ±×·± ±â´ÉÀÌ ¾øÀ¸¸ç, Á¦´ë·Î Ãâ·ÂÇÏ·Á¸é
¿ø½Ã ÈÀÏÀÇ °£°á¼ºÀ» ÇØÄ¡±â ¶§¹®À̾úÁö¸¸
ÇÁ·Î±×·¥À» ¼öÁ¤ÇÏ¿© ÷ºÎÇÏ¿´½À´Ï´Ù.
2. ÇѱÛÀ» 8859-1 ÀÎÄÚµùÀ¸·Î º¯È¯ÇÒ ¶§, 0x3F Äڵ尪À¸·Î º¯È¯ÇÏ´Â ÀÌÀ¯.
0x3F´Â ¾Æ½ºÅ° Äڵ尪À¸·Î ¾Æ½ºÅ° ¹®ÀÚ '?'¸¦ ³ªÅ¸³À´Ï´Ù.
8859-1 ÀÎÄÚµùÀ¸·Î ÇѱÛÀ» º¯È¯ÇÒ ¶§, '?' ¹®ÀÚ·Î º¯È¯µÇ´Â ÀÌÀ¯´Â,
8859-1 ÀÎÄÚµù¿¡¼´Â ÇÑ±Û ¹®ÀÚ¸¦ Ç¥ÇöÇÒ ¼ö ÀÖ´Â Äڵ尪ÀÌ ¾ø¾î¼
ºÎµæÀÌ ÄÚµå º¯È¯ Ŭ·¡½º°¡ '?'·Î º¯È¯ÇÑ °ÍÀÔ´Ï´Ù.
µû¶ó¼, ÄÚµå º¯È¯À» À߸øÇϸé Á¤º¸°¡ ¼Õ½ÇµÇ´Â À§ÇèÀÌ ÀÖ´Ù´Â °ÍÀ»
¾Ë ¼ö ÀÖ½À´Ï´Ù.
3. bytes[i] & 0xff ¶ó°í ÇÑ ÀÌÀ¯.
ÀÚ¹Ù¿¡¼´Â byte ÀÚ·áÇüÀÌ ¹«Á¶°Ç signed ÀÚ·áÇüÀÔ´Ï´Ù.
µû¶ó¼, Äڵ尪 128À» ³Ñ¾î°¡´Â °ÍÀº ¸ðµÎ À½¼ö·Î 󸮵˴ϴÙ.
Áï, toHexString ¸Þ½îµåÀÇ ÀÎÀÚÀÇ ÀÚ·áÇüÀº intÀε¥,
¹ÙÀÌÆ® ÀÚ·áÇüÀ» ³Ñ°ÜÁÖ¸é, Çüº¯È¯ÀÌ ¹ß»ýÇÏ¿© ³»ºÎÀûÀ¸·Î
ºÎÈ£ È®ÀåÀ» ÇÑ int°ªÀ¸·Î Àü´ÞµË´Ï´Ù.
ÀÌ¿Í °°ÀÌ Àü´ÞµÈ int°ªÀ» toHexString()À¸·Î Ãâ·ÂÇÏ¸é ¾ÆÁÖ
Ä¿´Ù¶õ ¼ö·Î ³ª¿À°Ô µË´Ï´Ù.
±×·¡¼, È®ÀåµÈ ºÎÈ£°ªÀ» À߶󳻱â À§ÇÏ¿©, 0xFF¶û
& ¿¬»êÀ» ÇÑ °á°ú¸¦ ³Ñ°ÜÁØ °ÍÀÔ´Ï´Ù.
import java.io.*;
class StringBytesConvTest
{ public static void main(String[] args)
throws IOException
{ byte[] buf = new byte[10000];
int count = 0;
for(int b; (b = System.in.read()) != -1; count++)
buf[count] = (byte) b;
byte[] ksc = new byte[count];
System.arraycopy(buf, 0, ksc, 0, count);
System.out.println( "KSC5601 (EUC-KR) Äڵ尪 (16Áø¼ö): "
+ toHex(ksc) );
String unicodes = new String(ksc, "KSC5601");
System.out.println( "À¯´ÏÄÚµå 2.0 Äڵ尪 (16Áø¼ö): "
+ toHex(unicodes) );
System.out.println( "¿ªº¯È¯µÈ KSC5601 (EUC-KR) Äڵ尪 (16Áø¼ö): "
+ toHex(unicodes.getBytes("KSC5601")) );
System.out.println( "¿ªº¯È¯µÈ 8859_1 Äڵ尪 (16Áø¼ö): "
+ toHex(unicodes.getBytes("8859_1")) );
System.out.println( "¿ªº¯È¯µÈ UTF8 Äڵ尪 (16Áø¼ö): "
+ toHex(unicodes.getBytes("UTF8")) );
System.out.write( ksc, 0, count );
System.out.print( unicodes );
System.out.flush();
}
static String toHex( byte[] codes )
{
String hex = pad0( Integer.toHexString(codes[0] & 0xff), 2 );
for( int i = 1; i < codes.length; i++ )
hex += " " + pad0( Integer.toHexString(codes[i] & 0xff), 2 );
return hex;
}
static String toHex( String unicodes )
{
String hex = pad0( Integer.toHexString(unicodes.charAt(0)), 4 );
for( int i = 1; i < unicodes.length(); i++ )
hex += " " + pad0( Integer.toHexString(unicodes.charAt(i)), 4 );
return hex;
}
static String pad0( String str, int size )
{ char[] zeros = new char[size - str.length()];
for( int i = 0; i < zeros.length; i++ )
zeros[i] = '0';
return new String( zeros ) + str;
}
}
C:\example\i18n> java StringBytesConvTest
ab°¡³ª (¸®ÅÏÅ°¸¦ Ä£ÈÄ, Control-Z ÀÔ·Â)
KSC5601 (EUC-KR) Äڵ尪 (16Áø¼ö): 61 62 b0 a1 b3 aa 0d 0a
À¯´ÏÄÚµå 2.0 Äڵ尪 (16Áø¼ö): 0061 0062 ac00 b098 000d 000a
¿ªº¯È¯µÈ KSC5601 (EUC-KR) Äڵ尪 (16Áø¼ö): 61 62 b0 a1 b3 aa 0d 0a
¿ªº¯È¯µÈ 8859_1 Äڵ尪 (16Áø¼ö): 61 62 3f 3f 0d 0a
¿ªº¯È¯µÈ UTF8 Äڵ尪 (16Áø¼ö): 61 62 ea b0 80 eb 82 98 0d 0a
ab°¡³ª
ab°¡³ª