◀ANSI版開発トップへ
  • 3865 CEncoderクラス
    • 3866 RE: CEncoderクラス
      • 3919 Re2: CEncoderクラス
        • 3920 Re3: CEncoderクラス
          • 3947 Re4: CEncoderクラス
            • 3957 Re5: CEncoderクラス
  • [3865] CEncoderクラス dskoba 2005年02月25日 01:55

    ファイルの入出力などで使用している,エンコード関連の関数をCMemoryから独立させてみました。
    基本的な部分が出来たので公開します。
    http://www2.wbs.ne.jp/~dskoba/sakura/1521dsk20050225.lzh

    ・JIS(ISO-2022-JP)は変換を1文字ずつに変更(遅くなるがコードが分かりやすくなるので)
    ・JIS(ISO-2022-JP)は行末でASCIIに戻らなくてもJIS X 208と認識するように変更(次の行になればASCIIに戻っているので)
    ・Unicode関係(Unicode/UnicodeBE/UTF-8/UTF-7)はPlatformSDKにまかせる。
    • [3866] RE: CEncoderクラス もか 2005年02月25日 16:34

      >・Unicode関係(Unicode/UnicodeBE/UTF-8/UTF-7)はPlatformSDKにまかせる。
      Windows 95は、MSDN ライブラリによると、
      >Windows 95: Under the Microsoft Layer for Unicode, MultiByteToWideChar also supports CP_UTF7 and CP_UTF8.
      だそうです。(日本語版には、この記述はありません。)
      ですから、UTF-7とUTF-8の変換は、自前で実装する必要があります。

      ▼dskobaさんのCEncoder内
      >stdlib.hの_swab()の方が速いかも(誰か計測してください)
      VC7.1の_swabは、添付のソースを読むかぎりでは、普通にバイトごとに入れ替え操作をしています。
      昔実装するときに計測した結果では、
      CPU環境:i486DX2, Celeron 366MHz, Crusoe 600MHz, Athlon 700MHz
      比較対象:4バイトごとシフト、1バイトごと普通に交換。だだし_swap関数は未使用
      1KB~10MB程度のデータを処理したときの、時間(観測できるように10~60秒ほどループ処理)を計測。
      結果:
      4バイト境界で整列されたデータでは、バイトごとの操作より、4バイトごとシフト操作したほうが明らかに高速でした。
      • [3919] Re2: CEncoderクラス dskoba 2005年04月17日 22:50

        > ですから、UTF-7とUTF-8の変換は、自前で実装する必要があります。

        UTF-8を実装しました。UTF-7はまだ途中。

        http://www2.wbs.ne.jp/~dskoba/sakura/1521dsk20050417.lzh
        • [3920] Re3: CEncoderクラス dskoba 2005年04月18日 21:50

          delete [] をあちこち忘れていたので修正。それ以外は変わってません。

          http://www2.wbs.ne.jp/~dskoba/sakura/1521dsk20050418.lzh
          • [3947] Re4: CEncoderクラス dskoba 2005年06月16日 23:14

            http://www2.wbs.ne.jp/~dskoba/sakura/1521dsk20050616.lzh

            UTF-7での保存を実装。UTF-7からの読み込みはまだ。

            '+'の取り扱いを変更。
            現状Base64エンコード文字の後ろの'+'はBase64でエンコードしているが,
            今回'+'は必ず"+-"でエンコード。
            • [3957] Re5: CEncoderクラス dskoba 2005年06月19日 23:44

              http://www2.wbs.ne.jp/~dskoba/sakura/1531dsk20050619.lzh

              ・テンプレートを使うように変更
              読みやすいコードになったと思う。
              ・保存でエラーが起きる場合があるのを修正
              エンコード時のバッファサイズを修正した。