すいません、VB4しかやってないんです、VBAはやったけど(ぼそ) チラシの裏だって立派な書き込み空間なんだからねっ!資源の有効活用なんだからねっ!とか偉そうに言ってるけど、実は色々と書き残したいだけ

だからなに? どうしろと? くるみサイズの脳みそしかないあやしいジャンガリアンベムスターがさすらう贖罪蹂躙(ゴシックペナルティ)

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  632  : 記事  35  : コメント  11674  : トラックバック  143

ニュース


片桐 継 は
こんなやつ

かたぎり つぐ ってよむの

大阪生まれ河内育ちなんだけど
関東に住みついちゃったの
和装着付師だったりするの
エセモノカキやってたりするの
VBが得意だったりするの
SQL文が大好きだったりするの
囲碁修行中だったりするの
ボトゲ好きだったりするの
F#かわいいよF#

正体は会った人だけ知ってるの

空気読まなくてごめんなさいなの


わんくまリンク

C#, VB.NET 掲示板
C# VB.NET掲示板

わんくま同盟
わんくま同盟Blog


WindowsでGo言語
WindowsでGo言語


ネット活動


SNSは疲れました

記事カテゴリ

書庫

日記カテゴリ

ギャラリ

イベント活動

プログラムの活動

使う人がどれだけいるんだ(笑)というような関数。
いや、今回はこっちでは多用する気配なんで共通関数化。
VB4な脳でロジック駆使した結果、やはりどこかVB4ちっく(笑)

ABCDEFGという要素の配列があってAとCとGだけ使いたいって時には、DBの列:bAlphには69と保存される仕様があると思って。
つまり、bAlph = 69 とすると「A-C-G」という文字列にしなくちゃなんない。

で、文字列を返す、関数(^^;


 'ビット数値と配列から、ビットONとなっている相対配列の文字列を連結して返す
 Protected Function BitToItem(ByVal oBit As Object, ByVal aLabels() As String, ByVal sJoinStr As String) As String
  'ビットを01の2進数配列にセット
  Dim wArray() As Char = Convert.ToString(CType("0" & oBit.ToString, Integer), 2).ToCharArray
  Array.Reverse(wArray)
  'リターンワークの準備
  Dim retStr As String = ""
  'ビットONにあわせて、配列の値を連結
  For i As Integer = LBound(wArray) To UBound(wArray)
   If wArray(i) = "1" Then
    retStr += aLabels(i) & vbCr
   End If
  Next
  Return retStr.TrimEnd(CChar(vbCr)).Replace(vbCr, sJoinStr)
 End Function

BitToItem(bAlpth,ABCDEFG配列,"-")を処理すれば A-C-G が返ります。

記事にも書いたのだけれど
Convert.ToString(CType("0" & oBit.ToString, Integer), 2) で数字が2進数の文字列になります
Convert.ToString(CType("0" & oBit.ToString, Integer), 2).ToCharArray でChar型の配列に分割
でもこのままだと、69→"1000101" なので 配列の[0]は上位ビットになっちゃう。そこで
Array.Reverse(wArray) でこれを反転させて配列[0]を下位ビットに。ここまでくればこっちのモン(笑)
あとは、For i As Integer = LBound(wArray) To UBound(wArray) で作る事ができた配列要素分だけループして判定
区切り文字にvbCrを使って、1Char文字、まぁ文字列には入れてこないだろう値を仮置きしてとにかく連結。
連結し終わったら、TrimEnd(CChar(vbCr)) で最後の連結子となる尻尾を切ってから
Replace(vbCr, sJoinStr) で本来の連結子に置き換えて文字列完成

こういうのをちまちま組んでるのは楽しいんだけどなぁ(おい)

投稿日時 : 2007年7月20日 11:25

コメント

# re: こういうことができたので嬉しいらしい(笑) 2007/07/20 12:36 シャノン
> 使う人がどれだけいるんだ(笑)

755を rwxr-x-rxに変換するとかw

# re: 脳内構成99%が「食」の奇跡(笑) 2007/07/20 12:38 片桐
>シャノさん
あ。そかー!そだねー!

というわけでタイトルがかわっちゃいましたです。恐るべし脳内めーかー

# re: 脳内構成99%が「食」の奇跡(笑) 2007/07/20 14:12 ぽぴ王子
69 を2進数に直すと 1000101 で、その 1 が立っている
場所における配列を返す。
しかし ABCDEFG とビットが対応しているので、1ビット目
の 1 は A に対応する。
ってことですよね。

GFEDCBA
1000101

要はこんな感じだ。
0 のところは - を返すと。

自分だったら最後まで数値のまま作業しちゃうかなあ。

Convert.ToString(CType("0" & oBit.ToString, Integer), 2)

あと、この辺のコードが(特に "0" & oBit.ToString のあたり)VB的?
つーか、えーとどちらかというと悪い意味で(ぉぃ)。
できてりゃ別に問題はないんで、かまやしないですが。

# でもソースレビューやったらガンガンつっこむけどね

# re: 脳内構成99%が「食」の奇跡(笑) 2007/07/20 14:25 片桐
>玉子さま
いぢめる?(と首を斜め40度傾けてみる)

呼び出し元のoBitがNULLどうかの処理してなさげなので回避ロジック<おい
"0" & oBit.ToString  なのは oBitがNullかもしんない的発想。ここがVB4脳。
VB4時代、"0"&文字→CintとかValってた名残ですね。

0のところを「-」で返せれば楽なんですが、ビットの立てたヤツだけを並べて一つの文字列にしたいーってことで、戻り値は「A-C-G」とか「A:C:G」とかなのですよ。立ってる立ってないでそのまま置き換えるならもちっと楽、とか思いつつ(^^;
そのまま「-」にして、後からreplaceとかした方がもっと汎用性でますけどね、確かに。

ユーザーの都合>ぷろぐらまの都合(はぁ)、事件は会議室で(ry






# re: 脳内構成99%が「食」の奇跡(笑) 2007/07/20 15:23 NAO
>>いぢめる?(と首を斜め40度傾けてみる)
バキッ!!(-_-)=○()゜O゜)アウッ!
アライグマより。


# re: 脳内構成99%が「食」の奇跡(笑) 2007/07/20 15:31 NAO
あそんでくれる?(と首を60度傾けてみる)
はい…馬の場合ですね。
お呼びでない?お呼びでない?こりゃまた失礼致しました~


# re: 脳内構成99%が「食」の奇跡(笑) 2007/07/20 16:02 片桐
NAOさんの「どS」(ぼそ)

遊んで遊んで光線&前かきガシガシ舌びろんびろんモード発動!ってこれはかつてのかの地での彼氏的愛馬の行動(おい)

# re: 脳内構成99%が「食」の奇跡(笑) 2007/07/20 16:28 NAO
所でいっつも片桐さんのレスで
「ぽぴ王子」(ぽぴおうじ)が「ぽぴ玉子」(ぽぴたまご)
と書かれている事を
「ぽぴ王子」は気付いてるんだろうか?と思う件について

# re: 脳内構成99%が「食」の奇跡(笑) 2007/07/20 17:15 ぽぴ王子
>>片桐さん
いぢめないよお(地球渡辺久美子の声で)
http://ja.wikipedia.org/wiki/%E3%81%BC%E3%81%AE%E3%81%BC%E3%81%AE#.E5.A3.B0.E5.84.AA_3

> ここがVB4脳
うん。この辺がVB4脳だなぁと僕も思ってました。
.NET脳だったら、Try ~ Catch で囲んで Integer.Parse か、VB8脳だったら TryParse かな。
"0" を付けるのは楽なんだけど、読む側に違和感を覚えさせそうな気がします。
ところで oBit が Null だと ToString も失敗しませんか?
DBNull.Value だったら ToString したら "" になるけど。

> ビットの立てたヤツだけを並べて一つの文字列にしたい
あーそうか。
A-C---G ではなくて、あくまで A-C-G にしたいと。
だとすると…って脳内VBでコーディングしてみた。
エラーチェックどころかコンパイルすらしてませんが。

Dim x As Integer = Integer.Parse(oBit)
Dim pos As Integer = 0
Dim list As New List(Of String)
While(x > 0)
If (x Mod 2) = 1 Then
list.Add(aLabels(pos))
End If
pos += 1
x = x \ 2
End While
Return String.Join(sJoinStr, list.ToArray())

>> ぽぴ玉子の話
気づいてますよ :-)
あと、かるぼさんも僕のことをぽぴ玉子って書くんですよね。

# re: 脳内構成99%が「食」の奇跡(笑) 2007/07/21 0:09 片桐
>玉子さま
いろいろありがとうございます。
oBitのインスタンス保証が上位で取れたので少し話が楽になりました(笑)

なるほろ、Integer.Parse(oBit) で、integerに変換なんだ。
ってことは、
Dim wArray() As Char = Convert.ToString(Integer.Parse(oBit), 2).ToCharArray
でビット配列ができるってことだなw

あと、さりげに String.Join(sJoinStr, list.ToArray()) のリターンも。
たしか、Joinって配列を連結するやつだから……でふむふむ、と。

ループで2で割り続ける、というのも確かにありなんですよね。
数値計算が嫌いなのは、高校から数学を一切やってないから(おいこらまて)
頭が文系脳なの(汗)

# re: 脳内構成99%が「食」の奇跡(笑) 2007/07/23 14:30 NAO
>>高校から数学を一切やってないから(おいこらまて)
インテグラル、FFT、DCT(-。-) ボソッ

#せっかく買ってきて上げたのに。

# re: 脳内構成99%が「食」の奇跡(笑) 2007/07/23 18:53 片桐
NAOさんのどS……orz

だって、きづいたの、20:55だったんですもん……il||li _| ̄|○ il||li

# re: 脳内構成99%が「食」の奇跡(笑) 2007/07/23 23:41 NAO
>>NAOさんのどS……orz
毎回毎回どSいうな!バキッ!!(-_-)=○()゜O゜)アウッ!<これもどSとか言うんだろ~

脳内1%は秘密(笑)

脳内1%は秘密(笑)

# 2進から文字列へ 2007/07/25 0:04 黒龍's Blog
2進から文字列へ

Post Feedback

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