指定されたバイト配列を、指定値で埋める関数です。バイト配列などは通常は使用しないのですが、制御関係などでは使用することもあり、 初期値として、バイト配列を設定する必要があります。
関数として以下に2種類の関数を例に示していますが、最初は単純に配列1個ずつに指定バイト値を設定しているだけです。 関数にするほどでもないのですが、この関数を元にしてInteger型の配列やDouble型の配列の初期化用の関数をオーバーライドすることができます。
2つ目の関数は、System.Linq の Enumerable を用いた方法を示します。 Enumerable.Repeat で IEnumerable なオブジェクトを生成し、更にそれをArray化して、コピーを行っています。 (こちらの方が、見やすいかもしれません。)
バイト配列を設定バイト値で埋める
''' -----------------------------------------------------------------------------
'''
''' バイト配列を設定値で埋める
'''
''' <param name="desArr">対象バイト配列</param>
''' <param name="fillByte">バイト値</param>
''' 単純に配列を1個ずつ処理
''' -----------------------------------------------------------------------------
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
''' -----------------------------------------------------------------------------
'''
''' バイト配列を設定値で埋める・その2
'''
''' <param name="desArr">対象バイト配列</param>
''' <param name="fillByte">バイト値</param>
''' System.Linq の Enumerable を用いた方法
''' -----------------------------------------------------------------------------
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
関連する記事
⇒左詰でバイト配列のコピーを行う⇒右詰でバイト配列のコピーを行う
PR
コメント