C#のBitConverter.ToChar()メソッドの使い方を解説!構文・コード例・実行結果
C#のBitConverter.ToChar()メソッドは、バイト配列内の指定された位置から2バイトを読み取り、それをUnicode文字(char型)に変換して返す静的メソッドです。バイナリデータの解析や文字コード処理など、バイトデータと文字データを扱う場面で活躍します。
構文
public static char ToChar (byte[] value, int startIndex);
各パラメータの意味は以下の通りです。
- value: 変換元となるバイト配列
- startIndex: 変換を開始する位置(インデックス)。この位置から2バイトが読み取られます。
戻り値
startIndexで指定した位置から読み取った2バイトを組み合わせて形成されるUnicode文字(char型)を返します。
例外
- ArgumentNullException: valueがnullの場合にスローされます。
- ArgumentOutOfRangeException: startIndexが0未満、または配列の有効な範囲外の場合にスローされます。
- ArgumentException: startIndex以降の残りのバイト数が2バイト未満の場合にスローされます。
使用例1:基本的な使い方
using System;
public class Demo {
public static void Main() {
byte[] arr = { 0, 20, 50, 65 };
Console.WriteLine("Array = {0} ",
BitConverter.ToString(arr));
for (int i = 1; i < arr.Length - 1; i = i + 2) {
char values = BitConverter.ToChar(arr, i);
Console.WriteLine("Value = " + arr[i]);
Console.WriteLine("Result = " + values);
}
}
}実行結果
Array = 00-14-32-41 Value = 20 Result = ㈔
この例では、forループを使ってインデックス1の位置から2バイト(20と50)を読み取り、それらを組み合わせたUnicode文字「㈔」が出力されています。このように、ToChar()メソッドは常に指定位置から2バイトずつ読み込んで1つの文字を生成します。
使用例2:複数の位置から変換する
using System;
public class Demo {
public static void Main() {
byte[] arr = { 50, 13, 23, 18, 160 };
Console.WriteLine("Array = {0} ",
BitConverter.ToString(arr));
for (int i = 1; i < arr.Length - 1; i = i + 2) {
char values = BitConverter.ToChar(arr, i);
Console.WriteLine("Value = " + arr[i]);
Console.WriteLine("Result = " + values);
}
}
}実行結果
Array = 32-0D-17-12-A0 Value = 13 Result = ᜍ Value = 18 Result = ꀒ
こちらの例では、5要素のバイト配列に対してループ処理を行い、インデックス1と3のそれぞれの位置から2バイトずつ読み取り、異なるUnicode文字「ᜍ」「ꀒ」に変換しています。
まとめ
BitConverter.ToChar()メソッドを使えば、バイト配列内の任意の位置から2バイトを読み取り、簡単にUnicode文字へ変換できます。引数には変換元のバイト配列と開始インデックスを指定し、範囲外のインデックスやバイト数不足の場合は例外がスローされる点に注意しましょう。バイナリデータの解析やエンコード・デコード処理などでぜひ活用してください。
-
C#のConvert.ToCharメソッドとは?数値をUnicode文字に変換する方法
C#のConvert.ToCharメソッドとはConvert.ToCharメソッドは、指定した値を対応するUnicode文字(char型)に変換するためのメソッドです。引数に渡された数値はUnicodeコードポイントとして解釈され、そのコードポイントに該当する文字が返されます。例えば、sbyte型の値をchar型に変換する場合は、以下のように記述します。sbyte byteVal = 92; char charVal = Convert.ToChar(byteVal);サンプルコードここでは、sbyte型の配列に格納された複数の数値を、foreachループを使って順番に文字へ変換する例を見てみ
-
C#のAggregateメソッドとは?配列要素を集計・演算する方法を解説
C#のLINQに用意されているAggregate(集計)メソッドを使うと、Sum(合計)、Min(最小値)、Max(最大値)、Average(平均)といった数学的な演算を柔軟に実装できます。Aggregateメソッドは、ラムダ式で指定した処理をシーケンスの各要素に順番に適用し、最終的に1つの結果へと集約します。ここでは、配列の全要素を掛け合わせる例を通して、その使い方を見ていきましょう。サンプル:配列要素の積を求めるまずは、次のような整数型の配列を用意します。int[] arr = { 10, 15, 20 };この配列に対して、Aggregate()メソッドを次のように呼び出します。 x *