*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

<C++/CLI>

バイト型配列 <-> 文字列の変換 <ステップ1. 単純にそのまま変換>


*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*


「バイト型配列 <---> 文字列の変換」

における一連の説明(知恵ノート)において、ここでは、

「バイト型配列 <-> 文字列の変換 <ステップ1. 単純にそのまま変換>」

について説明します。






総合の目次


本ページを含めた関連事項の総合目次です。

http://note.chiebukuro.yahoo.co.jp/detail/n367896


関連サンプル


本サンプルと関連性のあるサンプルです。すなわち、前回や次回以降のサンプルです。

関連サンプル 1「バイト型配列 <-> 文字列の変換 <ステップ1. 単純にそのまま変換>」
http://note.chiebukuro.yahoo.co.jp/detail/n367882

関連サンプル 2「ASCIIEncodingクラスによるバイト型配列(ASCII) <-> 文字列の変換」
http://note.chiebukuro.yahoo.co.jp/detail/n367883

関連サンプル 3「UnicodeEncodingクラスによるバイト型配列(Unicode) <-> 文字列の変換」
http://note.chiebukuro.yahoo.co.jp/detail/n367884

関連サンプル 4「UTF32Encodingクラスによるバイト型配列(UTF-32) <-> 文字列の変換」
http://note.chiebukuro.yahoo.co.jp/detail/n367885

関連サンプル 5「UTF7Encodingクラスによるバイト型配列(UTF-7) <-> 文字列の変換」
http://note.chiebukuro.yahoo.co.jp/detail/n367886

関連サンプル 6「UTF8Encodingクラスによるバイト型配列(UTF-8) <-> 文字列の変換」
http://note.chiebukuro.yahoo.co.jp/detail/n367887

関連サンプル 7-1「Encoding.ASCIIプロパティによるASCII指定バイト型配列 <-> 文字列の変換」
http://note.chiebukuro.yahoo.co.jp/detail/n367888

関連サンプル 7-2「Encoding.UnicodeプロパティによるUnicode指定バイト型配列 <-> 文字列の変換」
http://note.chiebukuro.yahoo.co.jp/detail/n367889

関連サンプル 7-3「Encoding.UTF32プロパティによるUTF-32指定バイト型配列 <-> 文字列の変換」
http://note.chiebukuro.yahoo.co.jp/detail/n367890

関連サンプル 7-4「Encoding.UTF7プロパティによるUTF-7指定バイト型配列 <-> 文字列の変換」
http://note.chiebukuro.yahoo.co.jp/detail/n367891

関連サンプル 7-5「Encoding.UTF8プロパティによるUTF-8指定バイト型配列 <-> 文字列の変換」
http://note.chiebukuro.yahoo.co.jp/detail/n367892

関連サンプル 7-6「Encoding.DefaultプロパティによるANSIコード指定バイト型配列 <-> 文字列の変換」
http://note.chiebukuro.yahoo.co.jp/detail/n367893

関連サンプル 7-7「Encoding.GetEncoding()メソッドによる文字コード指定バイト型配列(例Shift-JIS) <-> 文字列の変換」
http://note.chiebukuro.yahoo.co.jp/detail/n367894

関連サンプル 8「Encoding.Convert()メソッドによる文字コード指定バイト型配列(例Shift-JIS) <-> 文字列の変換」
http://note.chiebukuro.yahoo.co.jp/detail/n367895

関連サンプル 9「バイト型配列変換の各種サンプル」
関連サンプル9と、それ以降のサンプルもあります。総合目次から参照して下さい。(バイト型配列変換のサンプルは、総合目次上で複数個あります。総合目次から参照して下さい)






はじめに


バイト型配列と文字列データー(string型)の変換を行います。

その変換は、string.ToCharArray()やChar.ConvertFromUtf32()メソッドを使って変換します。

なお、上記変換は、


「方法: 16 進文字列と数値型の間で変換する (C# プログラミング ガイド)」

https://msdn.microsoft.com/ja-jp/library/bb311038.aspx


を参考にして変換を行っている。

しかし、この方法では、半角文字は正常変換されるが、全角文字は、うまく変換しない。






関連サンプルと比べた特徴


下記の各種サンプルプログラムは、どれもバイト型配列変換に関連するサンプルです。ただし、変換方法や文字コードの指定が、各サンプルで異なります。詳しくは、下記に説明します。



関連サンプル 1「バイト型配列 <-> 文字列の変換 <ステップ1. 単純にそのまま変換>」
バイト型配列と文字列データー(string型)の変換を行います。その変換は、string.ToCharArray()やChar.ConvertFromUtf32()メソッドを使って変換します。

関連サンプル 2「ASCIIEncodingクラスによるバイト型配列(ASCII) <-> 文字列の変換」
バイト型配列(ASCII格納byte[])と文字列データー(string型)の変換を行います。その変換は、文字エンコード関連機能のSystem.Text.ASCIIEncodingクラスを使って変換します。これは、バイト型配列に格納する文字コードをASCIIで指定しています。

関連サンプル 3「UnicodeEncodingクラスによるバイト型配列(Unicode) <-> 文字列の変換」
バイト型配列(Unicode格納byte[])と文字列データー(string型)の変換を行います。その変換は、文字エンコード関連機能のSystem.Text.UnicodeEncodingクラスを使って変換します。これは、バイト型配列に格納する文字コードをUnicode(UTF-16 形式のエンコーディング)で指定しています。

関連サンプル 4「UTF32Encodingクラスによるバイト型配列(UTF-32) <-> 文字列の変換」
バイト型配列(UTF-32格納byte[])と文字列データー(string型)の変換を行います。その変換は、文字エンコード関連機能のSystem.Text.UTF32Encodingクラスを使って変換します。これは、バイト型配列に格納する文字コードをUTF-32で指定しています。

関連サンプル 5「UTF7Encodingクラスによるバイト型配列(UTF-7) <-> 文字列の変換」
バイト型配列(UTF-7格納byte[])と文字列データー(string型)の変換を行います。その変換は、文字エンコード関連機能のSystem.Text.UTF7Encodingクラスを使って変換します。これは、バイト型配列に格納する文字コードをUTF-7で指定しています。

関連サンプル 6「UTF8Encodingクラスによるバイト型配列(UTF-8) <-> 文字列の変換」
バイト型配列(UTF-8格納byte[])と文字列データー(string型)の変換を行います。その変換は、文字エンコード関連機能のSystem.Text.UTF8Encodingクラスを使って変換します。これは、バイト型配列に格納する文字コードをUTF-8で指定しています。

関連サンプル 7-1「Encoding.ASCIIプロパティによるASCII指定バイト型配列 <-> 文字列の変換」
バイト型配列(ASCII格納byte[])と文字列データー(string型)の変換を行います。その変換は、文字エンコード関連機能のSystem.Text.Encoding.ASCIIプロパティを使って変換します。これは、バイト型配列に格納する文字コードをASCIIで指定しています。

関連サンプル 7-2「Encoding.UnicodeプロパティによるUnicode指定バイト型配列 <-> 文字列の変換」
バイト型配列(Unicode格納byte[])と文字列データー(string型)の変換を行います。その変換は、文字エンコード関連機能のSystem.Text.Encoding.Unicodeプロパティを使って変換します。これは、バイト型配列に格納する文字コードをUnicode(UTF-16 形式のエンコーディング)で指定しています。

関連サンプル 7-3「Encoding.UTF32プロパティによるUTF-32指定バイト型配列 <-> 文字列の変換」
バイト型配列(UTF-32格納byte[])と文字列データー(string型)の変換を行います。その変換は、文字エンコード関連機能のSystem.Text.Encoding.UTF32プロパティを使って変換します。これは、バイト型配列に格納する文字コードをUTF-32で指定しています。

関連サンプル 7-4「Encoding.UTF7プロパティによるUTF-7指定バイト型配列 <-> 文字列の変換」
バイト型配列(UTF-7格納byte[])と文字列データー(string型)の変換を行います。その変換は、文字エンコード関連機能のSystem.Text.Encoding.UTF7プロパティを使って変換します。これは、バイト型配列に格納する文字コードをUTF-7で指定しています。

関連サンプル 7-5「Encoding.UTF8プロパティによるUTF-8指定バイト型配列 <-> 文字列の変換」
バイト型配列(UTF-8格納byte[])と文字列データー(string型)の変換を行います。その変換は、文字エンコード関連機能のSystem.Text.Encoding.UTF8プロパティを使って変換します。これは、バイト型配列に格納する文字コードをUTF-8で指定しています。

関連サンプル 7-6「Encoding.DefaultプロパティによるANSIコード指定バイト型配列 <-> 文字列の変換」
バイト型配列(ANSI コード格納byte[])と文字列データー(string型)の変換を行います。その変換は、文字エンコード関連機能のSystem.Text.Encoding.Defaultプロパティを使って変換します。これは、バイト型配列に格納する文字コードをANSI コードで指定しています。

関連サンプル 7-7「Encoding.GetEncoding()メソッドによる文字コード指定バイト型配列(例Shift-JIS) <-> 文字列の変換」
バイト型配列(例Shift-JISコード格納byte[])と文字列データー(string型)の変換を行います。その変換は、文字エンコード関連機能のSystem.Text.Encoding.GetEncoding("shift_jis")メソッドを使って変換します。これは、バイト型配列に格納する文字コードをShift-JISで指定しています。

関連サンプル 8「Encoding.Convert()メソッドによる文字コード指定バイト型配列(例Shift-JIS) <-> 文字列の変換」
バイト型配列(指定文字コード格納byte[])と文字列データー(string型)の変換を行います。その変換は、文字エンコード関連機能のSystem.Text.Encoding.Convert()メソッドを使って変換します。これは、バイト型配列に格納する情報において、文字コードを指定します。なお、エラー情報(警告)として、変換失敗やフォールバック発生の情報を得られます。

関連サンプル 9「バイト型配列変換の各種サンプル」
上記までの各種サンプルの他にも、様々なサンプルを紹介します。





サンプルコード


ここで取り上げるサンプルは、なるべく複雑にならない範囲で、バイト型配列の変換を確かめられるものとします。






本サンプルの仕様概要


まず文字列をテキストボックスに入力します。その文字列をバイト型配列(byte[])に変換します。ここで、バイト型配列に格納される情報は、文字コードが格納されます。次に、そのバイト型配列の文字コードを、文字列に変換します(逆変換で復元)。次に、その文字列を、ラベルに設定します。

ラベルに入力と同じ文字列が表示されたら、サンプルコードの各種の変換は、正常に処理を行なったことになります。




フォームデザイン等の前準備


コードを記述する前に、フォームのデザイン作成などの、以下の前準備を行なって下さい。

<プロジェクトの作成>
本サンプルの確認用に、新規にプロジェクトを作成して下さい。
プロジェクトの種類は、「Windowsフォームアプリケーション」です。

<フォームのデザイン>
デザイン画面で、テキストボックス(TextBox)を1個と、ラベル(Label)を1個と、ボタン(button)を1個貼り付けて下さい。


 デザイン画面.jpg





<イベントプロシージャの作成>
デザイン画面のフォーム(ボタン等のコントロールが貼り付いていない無地の部分)をダブルクリックすることにより、Form1_Load() メソッドを作って下さい。次に、デザイン画面で先ほど貼り付けたボタン1(button1)をダブルクリックして、button1_Click() メソッドを作って下さい。





ソースコード






(記述量上限の制限で、ページを分けて記述しています)








コードの解説


サンプルコードの中に書かれていますコメントを読んで下さい。すなわち、コードの解説は、基本的にサンプルコードの中に書かれているコメントとします。



実行結果


ボタンをクリックすると、変換処理が行われます。

 実行画面.jpg



半角文字は、変換に成功しています。全角文字は、変換に失敗しています。(今回のサンプルでの方法での限界)





さいごに


本サンプルは、バイト型配列 <---> 文字列等の変換における基礎的な範囲です。よって、総合目次から、引き続き各種サンプルを参照して下さい。