- PR -

16進数のAND値の取得について

投稿者投稿内容
takuman
常連さん
会議室デビュー日: 2006/03/03
投稿数: 33
お住まい・勤務地: 神戸
投稿日時: 2007-07-30 16:16
こんにちは

16進数のAND値を取得する方法をvb.netで実現するには
どうすればいいのでしょうか?

すごく初歩的なご質問かもしれませんが
よろしくお願いします。
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2007-07-30 16:39
言語の機能で不明点があればまずは以下の資料を当たりましょう。
「Visual Basic のプログラミング ガイド」
http://msdn2.microsoft.com/ja-jp/library/y4wf33f0(VS.80).aspx
「Visual Basic リファレンス」
http://msdn2.microsoft.com/ja-jp/library/sh9ywfdk(VS.80).aspx

引用:

takumanさんの書き込み (2007-07-30 16:16) より:
16進数のAND値を取得する方法をvb.netで実現するには
どうすればいいのでしょうか?



そのままですが、ビット演算子ANDを使って計算します。

「論理/ビット演算子」
http://msdn2.microsoft.com/ja-jp/library/2h9cz2eb(VS.80).aspx

「16進数の」という説明は2通りの解釈ができるのですが、
ソースコード上で数値を10進表現でなく16進表現で書きたいという意味でしょうか?
それなら、数値の前に「&H」を付ければ、16進数と解釈されます。

&H10 ←10進数では16の意味

このルールについての記載は見つけにくいですが以下にあります。
「型文字」
http://msdn2.microsoft.com/ja-jp/library/s9cz43ek(VS.80).aspx


そうでなく、結果を16進数の文字列で表示したいということなら、
コード:
Dim i As Integer
i = 10
Console.WriteLine(i.ToString("X")) ' Aと表示


といった感じで、例えば、Int32.ToStringメソッドを使って実現できます。

「Int32.ToString メソッド (String) 」
http://msdn2.microsoft.com/ja-jp/library/8wch342y(VS.80).aspx
「標準の数値書式指定文字列」
http://msdn2.microsoft.com/ja-jp/library/dwhawy9k(VS.80).aspx
takuman
常連さん
会議室デビュー日: 2006/03/03
投稿数: 33
お住まい・勤務地: 神戸
投稿日時: 2007-07-30 17:14

早速のご回答ありがとうございました。

質問がアバウトすぎたのですが、具体的にいうと
下記のことを実現したいと思っています。

2バイトのコード(16進数表記)と0x40とのAND値が0の場合は正常とみなす。
というコード仕様があります。

この仕様をvb.netでの実現方法を知りたかったのです。

例えば0x00と0x40のAND値→0
0xffと0x40のAND値→1
ですよね。
この判定をするには?
というご質問でした。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-07-30 17:27
引用:

takumanさんの書き込み (2007-07-30 17:14) より:

例えば0x00と0x40のAND値→0
0xffと0x40のAND値→1
ですよね。
この判定をするには?
というご質問でした。


はい。 よね KEN さんはその答えに行き着くのに必要なものをバッチリすべて書かれております。(16 進表記方法、ビット演算方法)

コード:

    If (&H00 And &H40) = 0 Then
        MessageBox.Show("0")
    End If

    If (&HFF And &H40) > 0 Then
        MessageBox.Show("1")
    End If


こう書いた方がわかりやすいでしょうか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
takuman
常連さん
会議室デビュー日: 2006/03/03
投稿数: 33
お住まい・勤務地: 神戸
投稿日時: 2007-07-30 17:53
ありがとうございました。

勉強させていただきます。
TAD
ベテラン
会議室デビュー日: 2007/03/20
投稿数: 52
お住まい・勤務地: 海のそば
投稿日時: 2007-07-30 18:48
引用:
0xffと0x40のAND値→1

おっと、こいつは0x40でしょう。

あと、IF文の条件式は数値型を与えると0はfalse, 0以外はtrueとして評価しますから
コード:
If &hFF And &h40 Then
'成功
Else
'失敗
End If

でもいいってのは知っておいてもいいんじゃないかと。

それから、本当にプログラムを書くときは"&h40"は値をそのまま書かないで、一旦定数に入れて
おく等した方が数カ月後にちょっと楽が出来るかも知れません...
組み込みなんかだとハードとの対応で一つのデータの各ビットに色々意味を持たせたり
することがあって、生の値を書いているとすぐに何がどれだったかわからなくなっちゃいます。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2007-07-30 19:10
引用:

TADさんの書き込み (2007-07-30 18:48) より:
引用:
0xffと0x40のAND値→1

おっと、こいつは0x40でしょう。

あと、IF文の条件式は数値型を与えると0はfalse, 0以外はtrueとして評価しますから
コード:
If &hFF And &h40 Then
'成功
Else
'失敗
End If

でもいいってのは知っておいてもいいんじゃないかと。

それから、本当にプログラムを書くときは"&h40"は値をそのまま書かないで、一旦定数に入れて
おく等した方が数カ月後にちょっと楽が出来るかも知れません...
組み込みなんかだとハードとの対応で一つのデータの各ビットに色々意味を持たせたり
することがあって、生の値を書いているとすぐに何がどれだったかわからなくなっちゃいます。


それいつの時代のVBの話だよw
takuman
常連さん
会議室デビュー日: 2006/03/03
投稿数: 33
お住まい・勤務地: 神戸
投稿日時: 2007-07-30 19:12
皆様、ありがとうございます。
しかしながらよくよく考えて見ますと、
この条件を、SQL文の中で実現しないと難しいことが分かりました。

DBの組込み関数を調べる必要があり、
ちょっと.netの世界からは外れてきそうです。

もしも、SQLの中で実現できなければ、
データ取得後に1件ずつはじいていかないとなりませんが・・・

ただ、DBがHiRDBでODBC接続ですので
書籍等の情報も少なくて困っています・・・





引用:

それから、本当にプログラムを書くときは"&h40"は値をそのまま書かないで、一旦定数に入れて
おく等した方が数カ月後にちょっと楽が出来るかも知れません...
組み込みなんかだとハードとの対応で一つのデータの各ビットに色々意味を持たせたり
することがあって、生の値を書いているとすぐに何がどれだったかわからなくなっちゃいます。

スキルアップ/キャリアアップ(JOB@IT)