C# で Int を Byte に変換する

Muhammad Zeeshan 2023年10月12日
  1. C#ToByte(String) メソッドを使用して IntByte[] に変換する
  2. C#ToByte(UInt16) メソッドを使用して IntByte[] に変換する
  3. C#ToByte(String, Int32) メソッドを使用して IntByte[] に変換する
C# で Int を Byte に変換する

C# で IntByte[] に変換するためのいくつかの異なる手法を見ていきます。

C#ToByte(String) メソッドを使用して IntByte[] に変換する

このアプローチは、ToByte(String) メソッドを使用して、提供された数値の文字列表現を同等の 8 ビット符号なし整数に変換することによって機能します。変換する数値を含む文字列引数を取ります。

次の例では、文字列配列を作成し、各文字列をバイトに変換します。

まず、これらのライブラリを追加します。

using System;
using System.Diagnostics;

まず、Alldatavalues という string[] タイプの変数を作成し、いくつかの値を割り当てます。

string[] Alldatavalues = { null, "", "3227", "It5", "99", "9*9", "25.6", "$50", "-11", "St8" };

次に、for each ループを使用して、Convert.ToByte() を使用して整数をバイトに変換します。

byte num = Convert.ToByte(value);

値にオプションの符号とそれに続く一連の数値がない場合、フォーマット例外が発生します(0 から 9)。これを克服するために、FormatException ハンドラーを利用します。

catch (FormatException) {
  Console.WriteLine("Unsuported Format: '{0}'", value == null ? "<null>" : value);
}

値が MinValue 未満または MaxValue より大きい場合、オーバーフローエラーが発生します。

catch (OverflowException) {
  Console.WriteLine("Data Overflow Exception: '{0}'", value);
}

ソースコード:

using System;
using System.Diagnostics;

public class ToByteString {
  public static void Main() {
    string[] Alldatavalues = { null, "", "3227", "It5", "99", "9*9", "25.6", "$50", "-11", "St8" };
    foreach (var value in Alldatavalues) {
      try {
        byte num = Convert.ToByte(value);
        Console.WriteLine("'{0}' --> {1}", value == null ? "<null>" : value, num);
      } catch (FormatException) {
        Console.WriteLine("Unsupported Format: '{0}'", value == null ? "<null>" : value);
      } catch (OverflowException) {
        Console.WriteLine("Data Overflow Exception: '{0}'", value);
      }
    }
  }
}

出力:

'<null>' --> 0
Unsupported Format: ''
Data Overflow Exception: '3227'
Unsupported Format: 'It5'
'99' --> 99
Unsupported Format: '9*9'
Unsupported Format: '25.6'
Unsupported Format: '$50'
Data Overflow Exception: '-11'
Unsupported Format: 'St8'

C#ToByte(UInt16) メソッドを使用して IntByte[] に変換する

ToByte(UInt16) メソッドは、16 ビットの符号なし整数の値を 8 ビットの符号なし整数に相当する値に変換します。変換するには、引数として 16 ビットの符号なし整数が必要です。

次の例では、符号なし 16 ビット整数の配列がバイト値に変換されます。

追加するライブラリは次のとおりです。

using System;
using System.Diagnostics;

まず、data という名前の ushort[] 型変数を初期化します。その後、最小値として UInt16.MinValue、最大値として UInt16.MaxValue などの値を割り当て、90880 を挿入したように変換するその他の値を割り当てます。。

ushort[] data = { UInt16.MinValue, 90, 880, UInt16.MaxValue };

次に、result という名前の byte 型変数を作成します。

byte result;

その後、バイトタイプのデータを変換する for each ループを適用します。それ以外の場合、数値がバイトの範囲を超えると、例外が表示されます。

foreach (ushort numberdata in data) {
  try {
    result = Convert.ToByte(numberdata);
    Console.WriteLine("Successfully converted the {0} value {1} to the {2} value {3}.",
                      numberdata.GetType().Name, numberdata, result.GetType().Name, result);
  } catch (OverflowException) {
    Console.WriteLine("The {0} value {1} is outside the range of Byte.", numberdata.GetType().Name,
                      numberdata);
  }
}

ソースコード:

using System;
using System.Diagnostics;

public class ToByteString {
  public static void Main() {
    ushort[] data = { UInt16.MinValue, 90, 880, UInt16.MaxValue };
    byte result;

    foreach (ushort numberdata in data) {
      try {
        result = Convert.ToByte(numberdata);
        Console.WriteLine("Successfully converted the {0} value {1} to the {2} value {3}.",
                          numberdata.GetType().Name, numberdata, result.GetType().Name, result);
      } catch (OverflowException) {
        Console.WriteLine("The {0} value {1} is outside the range of Byte.",
                          numberdata.GetType().Name, numberdata);
      }
    }
  }
}

出力:

Successfully converted the UInt16 value 0 to the Byte value 0.
Successfully converted the UInt16 value 90 to the Byte value 90.
The UInt16 value 880 is outside the range of Byte.
The UInt16 value 65535 is outside the range of Byte.

C#ToByte(String, Int32) メソッドを使用して IntByte[] に変換する

このメソッドは、数値の文字列表現を、指定された基数の同等の 8 ビット符号なし整数に変換します。変換する数値を含む string パラメータ値を取ります。

以下のライブラリが追加されます。

using System;
using System.Diagnostics;

まず、Allbasedata と呼ばれる int[] 型変数を作成し、ベース 810 を割り当てます。

int[] Allbasedata = { 8, 10 };

次に、values と呼ばれる string[] 型変数を作成し、それに値を割り当て、number と呼ばれる byte 型変数を宣言します。

string[] values = { "80000000", "1201", "-6", "6", "07", "MZ", "99", "12", "70", "255" };
byte number;

次に、数値をバイト形式に変換する foreach ループを適用し、次のような例外も処理します。

  1. FormatException:このエラーは、frombase によって提供された base の有効な数字ではない文字が値に含まれている場合に発生します。
  2. OverflowException:このエラーは、基数 10 の符号なし数値を表す値の前に負の符号が付いている場合に発生します。
  3. ArgumentException:このエラーは、値が空の場合に発生します。
foreach (string value in values) {
  try {
    number = Convert.ToByte(value, numberBase);
    Console.WriteLine("   Converted '{0}' to {1}.", value, number);
  } catch (FormatException) {
    Console.WriteLine("   '{0}' is an Invalid format for a base {1} byte value.", value,
                      numberBase);
  } catch (OverflowException) {
    Console.WriteLine("   '{0}' is Outside the Range of Byte type.", value);
  } catch (ArgumentException) {
    Console.WriteLine("   '{0}' is invalid in base {1}.", value, numberBase);
  }
}

ソースコード:

using System;
using System.Diagnostics;

public class ToByteStringInt32 {
  public static void Main() {
    int[] Allbasedata = { 8, 10 };
    string[] values = { "80000000", "1201", "-6", "6", "07", "MZ", "99", "12", "70", "255" };
    byte number;
    foreach (int numberBase in Allbasedata) {
      Console.WriteLine("Base Number {0}:", numberBase);
      foreach (string value in values) {
        try {
          number = Convert.ToByte(value, numberBase);
          Console.WriteLine("   Converted '{0}' to {1}.", value, number);
        } catch (FormatException) {
          Console.WriteLine("   '{0}' is an Invalid format for a base {1} byte value.", value,
                            numberBase);
        } catch (OverflowException) {
          Console.WriteLine("   '{0}' is Outside the Range of Byte type.", value);
        } catch (ArgumentException) {
          Console.WriteLine("   '{0}' is invalid in base {1}.", value, numberBase);
        }
      }
    }
  }
}

出力:

Base Number 8:
   '80000000' is an Invalid format for a base 8 byte value.
   '1201' is Outside the Range of Byte type.
   '-6' is invalid in base 8.
   Converted '6' to 6.
   Converted '07' to 7.
   'MZ' is an Invalid format for a base 8 byte value.
   '99' is an Invalid format for a base 8 byte value.
   Converted '12' to 10.
   Converted '70' to 56.
   Converted '255' to 173.
Base Number 10:
   '80000000' is Outside the Range of Byte type.
   '1201' is Outside the Range of Byte type.
   '-6' is Outside the Range of Byte type.
   Converted '6' to 6.
   Converted '07' to 7.
   'MZ' is an Invalid format for a base 10 byte value.
   Converted '99' to 99.
   Converted '12' to 12.
   Converted '70' to 70.
   Converted '255' to 255.
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn

関連記事 - Csharp Int

関連記事 - Csharp Conversion