指定されたバイト配列を、指定値で埋める関数です。バイト配列などは通常は使用しないのですが、制御関係などでは使用することもあり、 初期値として、バイト配列を設定する必要があります。
関数として以下に2種類の関数を例に示していますが、最初は単純に配列1個ずつに指定バイト値を設定しているだけです。 関数にするほどでもないのですが、この関数を元にしてInteger型の配列やDouble型の配列の初期化用の関数をオーバーライドすることができます。
2つ目の関数は、System.Linq の Enumerable を用いた方法を示します。 Enumerable.Repeat で IEnumerable なオブジェクトを生成し、更にそれをArray化して、コピーを行っています。 (こちらの方が、見やすいかもしれません。)
バイト配列を設定バイト値で埋める
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | ''' ----------------------------------------------------------------------------- ''' <summary> ''' バイト配列を設定値で埋める ''' </summary> ''' <param name="desArr">対象バイト配列</param> ''' <param name="fillByte">バイト値</param> ''' <remarks>単純に配列を1個ずつ処理</remarks> ''' ----------------------------------------------------------------------------- Public Sub FillByteArr( ByVal desArr As Byte (), ByVal fillByte As Byte ) If desArr.Length > 0 Then Dim idx As Integer For idx = 0 To desArr.Length - 1 desArr(idx) = fillByte Next End If End Sub ''' ----------------------------------------------------------------------------- ''' <summary> ''' バイト配列を設定値で埋める・その2 ''' </summary> ''' <param name="desArr">対象バイト配列</param> ''' <param name="fillByte">バイト値</param> ''' <remarks>System.Linq の Enumerable を用いた方法</remarks> ''' ----------------------------------------------------------------------------- Public Sub FillByteArr2( ByVal desArr As Byte (), ByVal fillByte As Byte ) If desArr.Length > 0 Then Dim arr As IEnumerable(Of Byte ) = Enumerable.Repeat(fillByte, desArr.Length) Array.Copy(arr.ToArray(), desArr, desArr.Length) End If End Sub '***** '仮にテストプログラム '***** Private Sub FillByte_Click(sender As Object , e As EventArgs) Handles FillByte.Click Try '配列宣言 Dim byteArr(10) As Byte '配列を埋める FillByteArr2(byteArr, &H55) '結果の表示 Dim str As String = "" For i = 0 To byteArr.Length - 1 str &= String .Format( "byteArr[{0}] = {1}" , i, byteArr(i).ToString) & vbCrLf Next MsgBox(str) Catch ex As Exception 'エラー MsgBox(ex.Message) End Try End Sub |
関連する記事
⇒左詰でバイト配列のコピーを行う⇒右詰でバイト配列のコピーを行う
コメント