黒龍's Blog

明日から役立つ無駄知識をあなたに(仮)

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  170  : 記事  0  : コメント  2719  : トラックバック  26

ニュース

わんくま同盟に参加させていただきました。
どうぞよろしくお願いします。

自己紹介

コミュニティ

  • わんくま同盟
    わんくま同盟

書庫

片桐さんのこのエントリから

ちょっと乗り遅れたのでトラバで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) = 1Then
                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なのかな?

投稿日時 : 2007年7月25日 0:04

コメント

# re: 2進から文字列へ 2007/07/25 0:06 黒龍
やっぱしVB難しいw

# re: 2進から文字列へ 2007/07/25 9:46 片桐
こくりゅーさん、すっごー。

Sub Main()
Console.WriteLine(valueToString(69, "-"))
Console.ReadKey()
End Sub

Function valueToString(ByVal val As Integer, ByVal dStr As String)
Return ([Enum].Parse(GetType(相対配列), val.ToString()).ToString()).Replace(", ", dStr)
End Function

<Flags()> _
Enum 相対配列
A = 1
B = 2
C = 4
D = 8
E = 16
F = 32
G = 64
End Enum

こうじゃね?こうよね?
後は……列挙体ができれば使える、うん、

# re: 2進から文字列へ 2007/07/25 11:06 黒龍
そんな感じでOKすね。
.NETのenumってば結構高機能で数値->文字列や文字列->数値は基本機能で持ってますからうまく使うと楽できたりします。

Post Feedback

タイトル
名前
Url:
コメント