Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
  • ベストアンサー

JIS → S-JIS コード変換するには

JIS → S-JIS コード変換するにはどうしたらよいのでしょうか。 ご存じの方教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

jisの1文字の1バイト目をj1、2バイト目をj2とします。 同じくsjisの方を、s1, s2 とします。 s1 = (j1-0x21)/2 + ((j1<=0x5e)?0x81:0xc1); if (j1&1) s2 = j2 + ((j2<=0x5f)?0x1f:0x20); else s2 = j2 + 0x7e; ですね。

nanashisan
質問者

お礼

回答ありがとうございます。求めていたのは正にこういうことでした。 動作を確認してから質問を締めさせていただきます。すみませんが先にしなければならないことがあるので、動作確認は月曜日になります。

nanashisan
質問者

補足

うまくいきました。ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (4)

回答No.5

Cですと、ズバリ _mbcjistojms() という関数がランタイムライブラリにありますので、調べてみてください。

nanashisan
質問者

お礼

Cだとそんな便利な関数があったのですか。参考にさせていただきます。 ありがとうございました。

すると、全ての回答が全文表示されます。
回答No.4

あ、失礼。No.3の解答の文字と16進コードが全然合ってませんね。 適宜解釈してください。(_ _)

すると、全ての回答が全文表示されます。
回答No.3

あ、もしかして、1文字の変換だけではなくて、テキストとしての変換方法が 知りたいのでしょうか?そうだとすると、 'ESC'(0x1b) '$'(0x24) 'B'(0x42) または、'ESC'(0x1b) '$'(0x24) '@'(0x40) (後者は古いコード)で漢字(日本語)に移りますので、 そこから2byteずつ sjis に変換していきます。で、 'ESC'(0x1b) '('(0x24) 'B'(0x42) または、'ESC'(0x1b) '('(0x24) 'J'(0x40) で ASCII に移ります(正確には、前者が ASCII で、後者は JISX0201)。 本当は、もっと複雑なんですが(というか、JISコードというと、かなりあい まいになってしまいます。例えば、漢字に移った後でも、半角のスペースや制 御文字は有効だとか、半角カナはどうするんだとか)、そんな複雑な JIS コー ドを生成するプログラムはまずないので、大丈夫だと思います。 そういう可能性がある場合や、エラー処理をきちっとしたいという場合は、 ここには書ききれないので、ある程度勉強する必要があります。 ISO-2022-JP というのを見たことがあると思いますが、これは一般の JIS コー ドからある程度例外的なことやあいまいさを排除しようとしたコード系です。

nanashisan
質問者

お礼

とりあえず下の回答で解決しそうです。この回答もとNo.4の回答とあわせて参考にさせていただきます。何度もありがとうございました。

すると、全ての回答が全文表示されます。
  • YoshiMu
  • ベストアンサー率41% (96/229)
回答No.1

開発言語を教えてもらえると、適切な方法を提案いただけると思いますよ。

nanashisan
質問者

お礼

素早いレスありがとうございます。 ただのものが好きなのでHSPで書いてますが、BASICかCで教えていただけるとありがたいです。計算式(というほど単純じゃないかもしれませんが)だけでも構いません。

すると、全ての回答が全文表示されます。

関連するQ&A