/* jctype 2000-10 writen by tenk* */ /*#include */ /*#include "jctype.h"*/ #define GLOBAL GLOBAL unsigned short jistoms(unsigned short c) { /* JIS -> Shift JIS */ c -= 0x2121; if (c & 0x100) c += 0x9e; else c += 0x40; if ((unsigned char)c >= 0x7f) c++; c = (((c >> (8+1)) + 0x81)<<8) | ((unsigned char)c); if (c >= 0xA000) c += 0x4000; return c; } GLOBAL unsigned short mstojis(unsigned short c) { /* Shift JIS -> JIS */ if (c >= 0xE000) c -= 0x4000; c = (((c>>8) - 0x81)<<9) | (unsigned char)c; if ((unsigned char)c >= 0x80) c -= 1; if ((unsigned char)c >= 0x9e) c += 0x62; else c -= 0x40; c += 0x2121; return c; } GLOBAL int nthctype(const char *src, int nbyte) { /* nbyte 目が 1バイト文字(CT_ANK)か 全角1バイト目(CT_KJ1) か全角2バイト目(CT_KJ2)か、それら以外か. */ const unsigned char *s,*e; int m; s = (const unsigned char *)src; e = s + nbyte; m = 0/*CT_ANK*/; while (s <= e) { if (m != 1/*CT_KJ1*/) { if ((unsigned)(*s^0x20) - 0xA1 < 0x3C) /* (iskanji(*s)) */ m = 1/*CT_KJ1*/; else if (*s) /* (*s >= 0x20 || *s == 0x7f || *s == 0x80 || *s == 0xa0 || *s >= 0xfd) */ m = 0/*CT_ANK*/; else /* ライブラリによっては \0だけでなくコントロールコードも */ m = -1/*CT_ILGL*/; /* CT_ILGL(-1)にするものもある(bcc) */ } else { if (*s >= 0x40 && *s <= 0xfc && *s != 0x7f) /* iskanji2(c) */ m = 2/*CT_KJ2*/; else m = -1/*CT_ILGL*/; } s++; } return m; } GLOBAL unsigned short zentohan(unsigned short jc) { /* MS全角を可能ならば半角に変換。変換しなかった文字はそのまま返す */ static unsigned char jtokana[] = { 0x01,0x0b,0x02,0x0c,0x03,0x0d,0x04,0x0e,0x05,0x0f, /* あ */ 0x10,0x90,0x11,0x91,0x12,0x92,0x13,0x93,0x14,0x94, /* か */ 0x15,0x95,0x16,0x96,0x17,0x97,0x18,0x98,0x19,0x99, /* さ */ 0x1a,0x9a,0x1b,0x9b,0x09,0x1c,0x9c,0x1d,0x9d,0x1e,0x9e, /* た */ 0x1f,0x20,0x21,0x22,0x23, /* な */ 0x24,0xA4,0x64,0x25,0xA5,0x65,0x26,0xA6,0x66, /* は */ 0x27,0xA7,0x67,0x28,0xA8,0x68, 0x29,0x2a,0x2b,0x2c,0x2d, /* ま */ 0x06,0x2e,0x07,0x2f,0x08,0x30, /* や */ 0x31,0x32,0x33,0x34,0x35, /* ら */ 0xff,0x36,0xff,0xff,0x00,0x37,0x8d }; #if 1 /* カナ(記号)を半角にしない場合の記号テーブル */ static unsigned char jtokigo[256-0x40] = { ' ',0x00,0x00, ',', '.',0x00, ':', ';', '?', '!',0x00,0x00,0x00,0x00,0x00, '^', '~', '_',0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00, '/', 0x00,0x00,0x00, '|',0x00,0x00,0x60,'\'', 0x00,'\"', '(', ')',0x00,0x00, '[', ']', '{' ,'}' ,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, '+', '-',0x00,0x00,0x00, 0x00, '=',0x00, '<', '>',0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,'\\', '$',0x00,0x00, '%', '#', '&', '*', '@' }; #else /* カナ(記号)を半角にする場合の記号テーブル */ static unsigned char jtokigo[256-0x40] = { ' ', '、', '。', ',', '.', '・', ':', ';', '?', '!', '゙', '゚',0x00,0x00,0x00, '^', '~', '_',0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 'ー',0x00,0x00, '/', 0x00,0x00,0x00, '|',0x00,0x00,0x60,'\'', 0x00,'\"', '(', ')',0x00,0x00, '[', ']', '{' ,'}' ,0x00,0x00,0x00,0x00, '「', '」', 0x00,0x00,0x00,0x00, '+', '-',0x00,0x00,0x00, 0x00, '=',0x00, '<', '>',0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,'\\', '$',0x00,0x00, '%', '#', '&', '*', '@' }; #endif unsigned char d, c, k; c = (unsigned char)jc; k = jc >> 8; if ( ((unsigned)(k^0x20) - 0xA1 < 0x3C) == 0 /* (iskanji(*s)) */ || (c >= 0x40 && c <= 0xfc && c != 0x7f) == 0 /* iskanji2(c) */ ){ return jc; } if (k == 0x81) { /* 全角記号 */ d = jtokigo[c - 0x40]; if (d) jc = d; } else if (k == 0x82) { if (c >= 0x4f && c <= 0x58) { /* 全角数字 */ jc = c - 0x4f + '0'; } else if (c >= 0x60 && c <= 0x79) {/* 全角アルファベット */ jc = c - 0x60 + 'A'; } else if (c >= 0x81 && c <= 0x9a) {/* 全角アルファベット */ jc = c - 0x81 + 'a'; } else { #if 0 /* ひらがなを半角カナにする. ライブラリによってはこれが有効だったりするかも*/ if (c >= 0x9f && c <= 0xf1) { /* ひらがな */ d = c - 0x9f; d = jtokana[d]; if (d != 0xFF) jc = (d & 0x3f) + 0xA6/*'ヲ'*/; } #endif } } else if (k == 0x83) { #if 0 /* カタカナを半角カナにする. ライブラリによってはこれが有効だったりするかも */ if (c >= 0x40 && c <= 0x94) { /*カタカナ*/ d = c - 0x40; if (d > 0x3e) --d; d = jtokana[d]; if (d != 0xFF) jc = (d & 0x3f) + 0xA6/*'ヲ'*/; } #endif } return jc; } GLOBAL unsigned short hantozen(unsigned short jc) { /* 半角を全角に変換。変換しなかった文字はそのまま返す。 */ /* 半角カナは、変換しない(デフォルト) */ #if 1 static unsigned short h2z[] = { 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x8140, 0x8149, 0x8168, 0x8194, 0x8190, 0x8193, 0x8195, 0x8166, 0x8169, 0x816a, 0x8196, 0x817b, 0x8143, 0x817c, 0x8144, 0x815e, 0x824f, 0x8250, 0x8251, 0x8252, 0x8253, 0x8254, 0x8255, 0x8256, 0x8257, 0x8258, 0x8146, 0x8147, 0x8183, 0x8181, 0x8184, 0x8148, 0x8197, 0x8260, 0x8261, 0x8262, 0x8263, 0x8264, 0x8265, 0x8266, 0x8267, 0x8268, 0x8269, 0x826a, 0x826b, 0x826c, 0x826d, 0x826e, 0x826f, 0x8270, 0x8271, 0x8272, 0x8273, 0x8274, 0x8275, 0x8276, 0x8277, 0x8278, 0x8279, 0x816d, 0x818f, 0x816e, 0x814f, 0x8151, 0x8165, 0x8281, 0x8282, 0x8283, 0x8284, 0x8285, 0x8286, 0x8287, 0x8288, 0x8289, 0x828a, 0x828b, 0x828c, 0x828d, 0x828e, 0x828f, 0x8290, 0x8291, 0x8292, 0x8293, 0x8294, 0x8295, 0x8296, 0x8297, 0x8298, 0x8299, 0x829a, 0x816f, 0x8162, 0x8170, 0x8150, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, #if 0 /* カタカナにする */ 0x8150, 0x8142, 0x8175, 0x8176, 0x8141, 0x8145, 0x8392, 0x8340, 0x8342, 0x8344, 0x8346, 0x8348, 0x8383, 0x8385, 0x8387, 0x8362, 0x815b, 0x8341, 0x8343, 0x8345, 0x8347, 0x8349, 0x834a, 0x834c, 0x834e, 0x8350, 0x8352, 0x8354, 0x8356, 0x8358, 0x835a, 0x835c, 0x835e, 0x8360, 0x8363, 0x8365, 0x8367, 0x8369, 0x836a, 0x836b, 0x836c, 0x836d, 0x836e, 0x8371, 0x8374, 0x8377, 0x837a, 0x837d, 0x837e, 0x8380, 0x8381, 0x8382, 0x8384, 0x8386, 0x8388, 0x8389, 0x838a, 0x838b, 0x838c, 0x838d, 0x838f, 0x8393, 0x814a, 0x814b, #elif 0 /* ひらがなにする */ 0x8150, 0x8142, 0x8175, 0x8176, 0x8141, 0x8145, 0x82f0, 0x829f, 0x82a1, 0x82a3, 0x82a5, 0x82a7, 0x82e1, 0x82e3, 0x82e5, 0x82c1, 0x815b, 0x82a0, 0x82a2, 0x82a4, 0x82a6, 0x82a8, 0x82a9, 0x82ab, 0x82ad, 0x82af, 0x82b1, 0x82b3, 0x82b5, 0x82b7, 0x82b9, 0x82bb, 0x82bd, 0x82bf, 0x82c2, 0x82c4, 0x82c6, 0x82c8, 0x82c9, 0x82ca, 0x82cb, 0x82cc, 0x82cd, 0x82d0, 0x82d3, 0x82d6, 0x82d9, 0x82dc, 0x82dd, 0x82de, 0x82df, 0x82e0, 0x82e2, 0x82e4, 0x82e6, 0x82e7, 0x82e8, 0x82e9, 0x82ea, 0x82eb, 0x82ed, 0x82f1, 0x814a, 0x814b, #else /* もとの半角文字のまま */ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, #endif 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff, }; return (jc <= 0xFF) ? h2z[jc] : jc; #else /* h2z[]テーブル生成元のルーチン */ static unsigned char tojkigo[] = { 0x49,0x68,0x94,0x90,0x93, /* !”#$% */ 0x95,0x66,0x69,0x6a,0x96, /* &’()* */ 0x7b,0x43,0x7c,0x44,0x5e, /* +,―./ */ 0x46,0x47,0x83,0x81,0x84, /* :;<=> */ 0x48,0x97, /* ?@ */ 0x6d,0x8f,0x6e, /* [¥] */ 0x4f,0x51,0x65, /* ^_‘ */ 0x6f,0x62, /* {| */ 0x70,0x50, /* } ̄ */ 0x42,0x75,0x76, /* 。「」 */ 0x41, /* 、 */ 0x45, /* ・ */ 0x4A,0x4B, /* ゛゜ */ 0x5f /* \ */ }; static unsigned char tojkana[] = { 0x51,0x00,0x02,0x04,0x06,0x08, /* ヲ */ 0x42,0x44,0x46,0x22,0x00, /* ャ */ 0x01,0x03,0x85,0x07,0x09, /* ア */ 0x8a,0x8c,0x8e,0x90,0x92, /* カ */ 0x94,0x96,0x98,0x9a,0x9c, /* サ */ 0x9e,0xA0,0xA3,0xA5,0xA7, /* タ */ 0x29,0x2a,0x2b,0x2c,0x2d, /* ナ */ 0xAe,0xB1,0xB4,0xB7,0xBa, /* ハ */ 0x3d,0x3e,0x3f,0x40,0x41, /* マ */ 0x43,0x45,0x47, /* ヤ */ 0x48,0x49,0x4a,0x4b,0x4c, /* ラ */ 0x4e,0x52,0x00 /* ワ */ }; unsigned char c; if (jc < 0x20) { ; if (jc == 0x20) { /* スペース */ jc = 0x8140; } else if (jc <= 0x2f) { /* 記号 */ c = '!'; jc = 0x8100 + tojkigo[jc - c]; } else if (jc <= '9') { /* 数字 */ jc += 0x824f - '0'; } else if (jc <= '@') { /* 記号 */ c = ':' - 15; jc = 0x8100 + tojkigo[jc - c]; } else if (jc <= 'Z') { /* アルファベットの大文字 */ jc += 0x825f - '@'; } else if (jc <= 0x60) { /* 記号 */ c = '[' - 22; /*if (jc == '\\') c = '\\' - 39;*/ jc = 0x8100 + tojkigo[jc - c]; } else if (jc <= 'z') { /* アルファベットの小文字 */ jc += 0x8280 - 0x60; } else if (jc <= 0x7E) { /* 記号 */ c = '{' - 28; /* dummy } */ jc = 0x8100 + tojkigo[jc - c]; } else if (jc <= 0x9F) { ; } else if (jc <= 0xa4) { /* 半角仮名記号 */ jc = 0x8100 + tojkigo[jc - 0xA1/*'。'*/ + 32]; } else if (jc == 0xa5) { jc = 0x8145; } else if (jc == 0xb0) { /* ・半角なかてん||(ー) */ jc = 0x815b; } else if (jc <= 0xdd) { /* 半角カナ */ c = tojkana[jc - 0xA6/*'ヲ'*/] & 0x7f; #if 1 /* カタカナにする */ if (c > 0x3e) ++c; jc = c + 0x8340; #else /* ひらがなにする */ jc = c + 0x829f; #endif } else if (jc <= 0xdf) { /* 半角濁音・半濁音 */ jc = 0x8100 + tojkigo[jc - 0xDE/*'゙'*/ + 37]; } else { ; } return jc; #endif } #if 0 /*--------------------------------------------------------------------------*/ /* 簡易テストルーチン */ /* 試す場合は、上記の */ /* jistoms, mstojis, nthctype, zentohan, hantozen を */ /* jistoms0,mstojis0,nthctype0,zentohan0,hantozen0に */ /* リネームしてください */ /* ※ lsic86を基準にしました. borland系だと、結果が一致しません(T T) */ /* watcom-cはlsicと同じになりますが, #define jiskata jiskana が必要. */ /*--------------------------------------------------------------------------*/ #include #include #include #include #include #define iskanji0(c) ((unsigned)(((unsigned char)(c))^0x20) - 0xA1 < 0x3C) /*#define iskanji0(c) ((unsigned char)(c) >= 0x81 && ((unsigned char)(c) <= 0x9F || ((unsigned char)(c) >= 0xE0 && (unsigned char)(c) <= 0xFC)))*/ #define iskanji20(c) (((unsigned char)(c) >= 0x40 && (unsigned char)(c) <= 0xfc && (unsigned char)(c) != 0x7f)) #define iskana0(c) (((unsigned char)(c) >= 0xA1 && (unsigned char)(c) <= 0xDF)) #define iskmoji0(c) (((unsigned char)(c) >= 0xA6 && (unsigned char)(c) <= 0xDF)) #define iskpun0(c) (((unsigned char)(c) >= 0xA1 && (unsigned char)(c) <= 0xA5)) #define isalkana0(c) (iskmoji0(c) || isalpha(c)) #define isalnmkana0(c) (iskmoji0(c) || isalnum(c)) #define isgrkana0(c) (iskana0(c) || isgraph(c)) #define ispnkana0(c) (iskpun0(c) || ispunct(c)) #define isprkana0(c) (iskana0(c) || isprint(c)) #define jisspace0(c) ((c) == 0x8140) #define jiskigou0(c) ((c) <= 0x81ac && (c) >= 0x8141/*、*/ && (c) != 0x817f) #define jisdigit0(c) ((c) <= 0x8258/*9*/ && (c) >= 0x824F/*0*/) #define jisupper0(c) ((c) <= 0x8279/*Z*/ && (c) >= 0x8260/*A*/) #define jislower0(c) ((c) <= 0x829a/*z*/ && (c) >= 0x8281/*a*/) #define jisalpha0(c) (jisupper0(c) || jislower0(c)) #define jishira0(c) ((c) <= 0x82F1/*ん*/ && (c) >= 0x829f/*ぁ*/) #define jiskata0(c) ((c) <= 0x8396/**/ && (c) >= 0x8340/*ァ*/ && (c) != 0x837f) #define jisl00(c) ((c) <= 0x889e && jiszen(c)) #define jisl10(c) (0x889f <= (c) && (c) <= 0x9872 && jiszen(c)) #define jisl20(c) (0x989f <= (c) && (c) <= 0xea9e && jiszen(c)) #define jtolower0(c) ((0x8279 >= (c) && (c) >= 0x8260) ? (c)+0x21 : (c)) #define jtoupper0(c) ((0x829a >= (c) && (c) >= 0x8281) ? (c)-0x21 : (c)) #define jtohira0(c) ((0x8393 >= (c) && (c) >= 0x8380) ? (c)-0xa2 : (0x837e >= (c) && (c) >= 0x8340) ? (c) - 0xa1 : (c)) #define jtokata0(c) ((0x8393-0xa2 >= (c) && (c) >= 0x8380-0xa2) ? (c)+0xa2 : (0x837e-0xa1 >= (c) && (c) >= 0x8340-0xa1) ? (c) + 0xa1 : (c)) #define jiszen0(c) (iskanji0((unsigned char)((c)>>8)) && iskanji20((unsigned char)(c))) #define chkctype0(c,ct) (((ct) != 1) ? (iskanji0(c) ? CT_KJ1 : (c) ? CT_ANK : CT_ILGL) : (iskanji20(c) ? CT_KJ2 : CT_ILGL)) static sub(void); int main(void) { char buf[] = "abcあいうえ@お\x81\x10\0"; int c, n,a; for (a = 0; a < strlen(buf)+1; a++) { n = nthctype(buf, a) - nthctype0(buf, a); if (n) printf("%2x:nthctype[%x] %d\n", a, buf[a], n); } for (c = 0; c < 256; c++) { n = (iskanji(c)?1:0) - (iskanji0(c)?1:0); if (n) printf("%2x:iskanji %d\n", c, n); n = (iskanji2(c)?1:0) - (iskanji20(c)?1:0); if (n) printf("%2x:iskanji2 %d\n", c, n); n = (iskana(c)?1:0) - (iskana0(c)?1:0); if (n) printf("%2x:iskana %d\n", c, n); n = (iskmoji(c)?1:0) - (iskmoji0(c)?1:0); if (n) printf("%2x:iskmoji %d\n", c, n); n = (iskpun(c)?1:0) - (iskpun0(c)?1:0); if (n) printf("%2x:iskpun %d\n", c, n); n = (isalkana(c)?1:0) - (isalkana0(c)?1:0); if (n) printf("%2x:isalkana %d\n", c, n); n = (isalnmkana(c)?1:0) - (isalnmkana0(c)?1:0); if (n) printf("%2x:isalnmkana %d\n", c, n); n = (isgrkana(c)?1:0) - (isgrkana0(c)?1:0); if (n) printf("%2x:isgrkana %d\n", c, n); n = (ispnkana(c)?1:0) - (ispnkana0(c)?1:0); if (n) printf("%2x:ispnkana %d\n", c, n); n = (isprkana(c)?1:0) - (isprkana0(c)?1:0); if (n) printf("%2x:isprkana %d\n", c, n); n = chkctype(c,0) - chkctype0(c,0); if (n) printf("%4x:chkctype(1b) %d(%d,%d)\n", c, n, chkctype(c,0), chkctype0(c,0)); n = chkctype(c,1) - chkctype0(c,1); if (n) printf("%4x:chkctype(2b) %d(%d,%d)\n", c, n, chkctype(c,1), chkctype0(c,1)); } sub(); return 0; } static sub(void) { int c, n,a,b; for (a = 0x21; a < 0x7f; a++) { for (b = 0x21; b < 0x7f; b++) { c = a << 8 | b; n = jistojms(c) - jistoms0(c); if (n) printf("%4x:jistojms %d\n", c, n); c = jistoms0(c); n = jmstojis(c) - mstojis0(c); if (n) printf("%4x:jmstojis %d\n", c, n); n = (jisspace(c)?1:0) - (jisspace0(c)?1:0); if (n) printf("%4x:jisspace %d\n", c, n); n = (jiskigou(c)?1:0) - (jiskigou0(c)?1:0); if (n) printf("%4x:jiskigou %d\n", c, n); n = (jisdigit(c)?1:0) - (jisdigit0(c)?1:0); if (n) printf("%4x:jisdigit %d\n", c, n); n = (jisupper(c)?1:0) - (jisupper0(c)?1:0); if (n) printf("%4x:jisupper %d\n", c, n); n = (jislower(c)?1:0) - (jislower0(c)?1:0); if (n) printf("%4x:jislower %d\n", c, n); n = (jisalpha(c)?1:0) - (jisalpha0(c)?1:0); if (n) printf("%4x:jisalpha %d\n", c, n); n = (jishira(c)?1:0) - (jishira0(c)?1:0); if (n) printf("%4x:jishira %d\n", c, n); n = (jiskata(c)?1:0) - (jiskata0(c)?1:0); if (n) printf("%4x:jiskata %d\n", c, n); n = (jisl0(c)?1:0) - (jisl00(c)?1:0); if (n) printf("%4x:jisl0 %d\n", c, n); n = (jisl1(c)?1:0) - (jisl10(c)?1:0); if (n) printf("%4x:jisl1 %d\n", c, n); n = (jisl2(c)?1:0) - (jisl20(c)?1:0); if (n) printf("%4x:jisl2 %d\n", c, n); n = jtolower(c) - jtolower0(c); if (n) printf("%4x:jtolower %d\n", c, n); n = jtoupper(c) - jtoupper0(c); if (n) printf("%4x:jtoupper %d\n", c, n); n = jtohira(c) - jtohira0(c); if (n) printf("%4x:jtohira(%c%c) %d\n", c,c>>8,c&255, n); n = jtokata(c) - jtokata0(c); if (n) printf("%4x:jtokata(%c%c) %d\n", c,c>>8,c&255, n); n = jiszen(c) - jiszen0(c); if (n) printf("%4x:jiszen %d\n", c, n); n = hantozen(c) - hantozen0(c); if (n) printf("%4x:hantozen %d\n", c, n); n = zentohan(c) - zentohan0(c); if (n) printf("%4x:zentohan (%c%c) %d(%x - %x)\n", c, c>>8,c&255, n, zentohan(c), zentohan0(c)); } } return 0; } #endif