文字列をbyte配列に直す §
Encoding.GetBytes メソッド一発です。
具体的には、UTF-8のバイト配列に直すのならEncoding.UTF8.GetBytesでオッケーです。
難しいことはないですね。
byte配列を文字列に直す §
これも、Encoding.GetString メソッド一発です。
具体的には、UTF-8のバイト配列から直すのならEncoding.UTF8.GetStringでオッケーです。
これも難しいことはないですね。
罠の数々 §
- データ量が増えることがあることに注意しよう。1文字しか入っていない文字列でも、UTF-8に直すと文字の種類によって2バイト、3バイト、それ以上になることがある
- 変換できない文字があることに注意しよう。たとえば、アルファベットと数字しか表現できないASCIIに漢字を入れようとしても、それは変換ができず?に置き換えられてしまう
参考リンク §
Encoding.GetBytes メソッド
Encoding.GetString メソッド
どちらのメソッドも対象を絞り込む機能を持っている。配列の特定の部分だけ文字列にする等。たとえば、ファイル全体を配列に読み込んでから文字列の部分だけを文字に置き換えるようなことも容易にできる。上記のリンクからどうすればできるのかを調べてみよう。
リポジトリ §
https://github.com/autumn009/cshowto
StringBytes §
using System;
using System.Text;
class Program
{
static void Main()
{
var s = "Hella World";
Console.WriteLine(s);
var array = Encoding.UTF8.GetBytes(s);
foreach (var item in array) Console.Write($"{item} ");
Console.WriteLine();
array[4] = 111;
foreach (var item in array) Console.Write($"{item} ");
Console.WriteLine();
var d = Encoding.UTF8.GetString(array);
Console.WriteLine(d);
}
}
実行結果
Hella World
72 101 108 108 97 32 87 111 114 108 100
72 101 108 108 111 32 87 111 114 108 100
Hello World