MHP2Gツール

タグの編集
投稿者 tomoya  (高校生) 投稿日時 2010/8/12 04:43:01
いつもお世話になってます。

ちょっと分からないことがあるのでお尋ねします。

まずフォーム上にボタン1とテキストボックス1とテキストボックス2の複数行を配置します。

テキストボックス1に漢字やカタカナ、ひらがなとうを入力します

ボタン1を押すとテキストボックス2にこのようなコードが出るようにしたいです。
ですがテキストボックスに入力した文字を16進数にして変換して出るようにしたいです。

_C0 character_namechange←チートコード名
_L 0x11195E40 0x00000000
_L 0x111FD0F8 0x00000000←変更する名前の一文字目
_L 0x11195E42 0x00000000
_L 0x111FD0FA 0x00000000←変更する名前の二文字目
_L 0x11195E44 0x00000000
_L 0x111FD0FC 0x00000000←変更する名前の三文字目
_L 0x11195E46 0x00000000
_L 0x111FD0FE 0x00000000←同じく四文字目
_L 0x11195E48 0x00000000
_L 0x111FD100 0x00000000
_L 0x11195E4A 0x00000000
_L 0x111FD102 0x00000000
_L 0x11195E4C 0x00000000
_L 0x111FD104 0x00000000
_L 0x11195E4E 0x00000000
_L 0x111FD106 0x00000000←・・・・八文字目

例ともやと打った場合
_C0 character_namechange←チートコード名
_L 0x11195E40 0x00000000
_L 0x111FD0F8 0x00003068←変更する名前の一文字目
_L 0x11195E42 0x00000000
_L 0x111FD0FA 0x0000307B←変更する名前の二文字目
_L 0x11195E44 0x00000000
_L 0x111FD0FC 0x00003084←変更する名前の三文字目
_L 0x11195E46 0x00000000
_L 0x111FD0FE 0x00000000←同じく四文字目
_L 0x11195E48 0x00000000
_L 0x111FD100 0x00000000
_L 0x11195E4A 0x00000000
_L 0x111FD102 0x00000000
_L 0x11195E4C 0x00000000
_L 0x111FD104 0x00000000
_L 0x11195E4E 0x00000000
_L 0x111FD106 0x00000000←・・・・八文字目

こうなるようにしたいです。

お願いします。
投稿者 YAS  (社会人) 投稿日時 2010/8/12 06:41:45
>ちょっと分からないことがあるのでお尋ねします。

例示された処理のどのあたりがわからないのでしょうか。

例えば,文字列から1文字ずつ取り出す部分ですか?
投稿者 tomoya  (高校生) 投稿日時 2010/8/12 08:48:11
テキストボックス1に打ってある文字を

一文字目などに16進数で入れて行きたいです。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2010/8/12 09:54:06
分からないのは、どの部分でしょうか?

(1) ボタン押下時に、TextBox1 内の「漢字やカタカナ、ひらがな等」を取得。
(2) 取得した文字列を数値化する。
(3) 数値を16進数表記の文字列に変換する。
(4) TextBox2 に転記。

ちなみに 2 の部分は、事前にエンコード方式を決めておく必要があります。

たとえば、"あ" という 1 文字を例に出すと、エンコード方式によって
a4a2 にも 3042 にも 82a0 にも e38182 にもなりえます。

また、そのエンコーディングで変換できない文字が渡された場合の対処方法も
事前に決めておく必要があるでしょう。

> 例ともやと打った場合
これは UTF-16 でしょうか。 …いや UTF-32 かな?
投稿者 tomoya  (高校生) 投稿日時 2010/8/13 00:07:43
数値を16進数表記の文字列に変換する。ここです。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2010/8/13 01:35:47
元データが Byte 配列であるならば、
 Dim S As String = BitConverter.ToString(binary)
のように記述できます。結果は、"30-68-30-7B-30-84" のような形式になります。

元データが Integer なら、
 Dim S As String = value.ToString("x4")
のように記述できます。この場合の結果は "307b" 形式です。
書式を "x8" にすれば "0000307b" で取得され、
書式を "X4" にすれば "307B" で取得されます。

この他にも、Hex関数を使って変換する方法や、String.Format メソッドで
変換する方法などがあります。
投稿者 だいじゃ  (高校生) 投稿日時 2010/8/13 22:02:33
AscWメソッドを使えばできます。
UTF32ですよね?

'1文字目の「と」の文字コードを変数oneに代入。 
Dim one = AscW("と")
'2文字目の「も」の文字コードを変数twoに代入。 
Dim two = AscW("も")
'3文字目の「と」の文字コードを変数threeに代入。 
Dim three = AscW("や")


これでそれぞれの変数にそれぞれの文字コードがInteger型で格納されています。
これを引き出していけばできます。