忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

バイト配列を設定バイト値で埋める

指定されたバイト配列を、指定値で埋める関数です。バイト配列などは通常は使用しないのですが、制御関係などでは使用することもあり、 初期値として、バイト配列を設定する必要があります。
関数として以下に2種類の関数を例に示していますが、最初は単純に配列1個ずつに指定バイト値を設定しているだけです。 関数にするほどでもないのですが、この関数を元にしてInteger型の配列やDouble型の配列の初期化用の関数をオーバーライドすることができます。

2つ目の関数は、System.Linq の Enumerable を用いた方法を示します。 Enumerable.RepeatIEnumerable なオブジェクトを生成し、更にそれを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

関連する記事

左詰でバイト配列のコピーを行う
右詰でバイト配列のコピーを行う

おすすめ本

share











PR

コメント

コメントを書く