2020年10月15日
川俣晶の縁側ソフトウェアC# コーディング How To total 2776 count

【入門級】文字列をbyte配列に直してまた文字列に戻す

Written By: 川俣 晶連絡先

文字列を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

COOL C# CREW

C#ハウツー連載の解説増量、カラーのソース、新規書き下ろし追加の読みやすい単行本はこちら。

C#ハウツー: 逆引き入門・こんな機能はどう書くの?