片桐さんのこのエントリから
ちょっと乗り遅れたのでトラバでw
最初(よく読まずに^^;)考えたのはこういうの
Sub Main()
Console.WriteLine(valueToString(69))
Console.ReadKey()
End Sub
Function valueToString(ByVal val As Integer)
Return ([Enum].Parse(GetType(相対配列), val.ToString()).ToString())
End Function
<Flags()> _
Enum 相対配列
A = 1
B = 2
C = 4
D = 8
E = 16
F = 32
G = 64
End Enum
これだと結果がA, C, G見たくなるのでチョと違うかと思ってまじめにやってみる
Sub Main()
Console.WriteLine(valueToString(69))
Console.ReadKey()
End Sub
Function valueToString(ByVal val As Integer)
Dim result As String = ""
For index As Integer = 0 To 31
If (((val >> index) And 1) = 1) Then
result += [Enum].Parse(GetType(相対配列), (1 << index).ToString()).ToString()
Else
result += "-"
End If
Next
Return result.TrimEnd("-")
End Function
<Flags()> _
Enum 相対配列
A = 1
B = 2
C = 4
D = 8
E = 16
F = 32
G = 64
End Enum
これならA-C---G見たくなるのでって、ん?よくみるとA-C-G?
だと最初のコードでReplaseすればOKなのかな?