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