こんにちわ。以下のプログラムを解読しているのですが、型変換がどう行われているのかがわからなくて困っています。
『←ココ!!』となっているところの型変換です。PのLong型をByte型へ変換しているとは思うのですが、内容をみるとどうなってそうなったのかわからないのです。『←ココ!!』の後の値を見てみると、
bP.bP(3)は「0」
bP.bP(2)は「188」
bP.bP(1)は「97」
bP.bP(0)は「78」
となっています。LSetで「P:12345678」がどうなってこうなったのでしょうか?
教えていただけるとうれしいです。宜しくお願いしまっす。
***プログラム***
’宣言
Const P As Long =12345678
Private Type bytP
bP(3) As Byte
End Type
Private Type lngP
lP As Long
End Type
Dim bytB(4) As Byte
’mainの中
lP.lP = P
LSet bP = lP 『←ココ!!』
bytB(0) = bP.bP(3)
bytB(1) = bP.bP(2)
bytB(2) = bP.bP(1)
bytB(3) = bP.bP(0)
******************
No.1
- 回答日時:
ぱっとみて、
Private Type bytP
bP(3) As Byte
End Type
ですが、3->4ではありませんか?
その後の
Dim bytB(4) As Byte
は4ですから。
抜粋ではなく、動くようなプログラムで載せてくれると検証しやすいのですが。
この回答への補足
ありがとうございます!
Dim bytB(4) As Byte
が
Dim bytB(3) As Byte
ですね。人のプログラムを解読しています。
動くプログラムはめちゃくちゃ長いんです。
LSetの構造について教えていただければ光栄です。
No.2
- 回答日時:
いえいえ
Dim bytB(4) As Byte
が
Dim bytB(3) As Byte
ですね。
ではなく、
bP(3) As Byte
を
bP(4) As Byte
です。
lset ですが、
http://www.microsoft.com/japan/msdn/vbasic/techi …
にかいてあるとおり、
またはユーザー定義型の変数を別のユーザー定義型変数にコピーします。
です。
C言語で言うところの memset と同じイメージですね。
ただなんでこんな面倒くさいことをしているのか意味不明です。
単に、
long型変数P を 1byte ずつ bytB(0)->(3)へ入れているだけですから、ビット演算をしてしまえばこんなユーザ定義型など使わなくてもいいのに。
では。
この回答への補足
ありがとうございます!
bytB(0) = bP.bP(3)
bytB(1) = bP.bP(2)
bytB(2) = bP.bP(1)
bytB(3) = bP.bP(0)
で箱が4つだから3の間違いかな。と思ったのですが。。
LSetの意味は、memsetと聞いてなんとなくわかってきました。確かになんでこんなことをしているのか不思議ですね。
No.3ベストアンサー
- 回答日時:
LSet は、既に説明があるとおり、
ユーザー定義型のメモリ領域のコピー
なんで
12345678 を16進表現にすると、00BC614Eですから
00=0
BC=188
61=97
4E=78
ですね。
やってることは、LongをByteに切り分けているということだと思います。
単に代入するだけでいいので楽ということでしょうね。
ちょうど、C言語で言うunion みたいな感じの使い方ですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル 値をコピペした時に、条件付き書式で塗られた背景色もペーストさせる 2 2023/04/05 17:21
- 数学 比の全体の大きさを上の辺と下の辺で合わせて見たのですが、赤色で囲んだ三角形の相似を使うと、BPの比は 2 2022/04/04 12:08
- 英語 英語の表現について さっき外国人の集団の方々を後ろから自転車で抜こうって時に、 後ろの人がぼくに気づ 1 2022/08/03 20:20
- 数学 写真の数学問題の解答で「ベクトルAP=kベクトルAQ」「ベクトルBP=lベクトルBR」とする発想はど 3 2023/07/19 20:17
- その他(悩み相談・人生相談) 数学IIの問題で、 2点(5.0)(-3.0)に対して、距離APが距離BPの3倍である点Pの軌跡を求 3 2023/05/04 11:45
- その他(学校・勉強) 至急です! チェバの定理を使った問題なのですが、BP/PC・2/5・3/1=1 を計算すると、6/5 3 2023/01/24 22:11
- 生物学 ヒトゲノムの質量の求め方 ヒトゲノムの長さは3*10^9 bp、DNA中のヌクレオチドの平均分子量は 3 2022/06/11 09:08
- 経済学 is-lm-bp分析と国際収支の件で質問 1 2023/05/09 22:17
- 工学 「電気・電子」「機械」技術eラーニング 1 2022/09/23 20:54
- カスタマイズ(車) 2003年式レガシィB4 2.0GT TA-BL5に乗ってるのですが このマイルドダンパーという車高 2 2023/06/11 22:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのプログラムで、DIAG = 1# ...
-
Integer変数をカラにしたいので...
-
構造体のデータを丸ごとコピー...
-
VBAにてcolorindexを変数に格納...
-
プログラミング言語の変数と数...
-
値が変わるのはどうしてでしょ...
-
値が代入されてない時
-
VB6.0の変数、関数の定義位置か...
-
VBAの変数のデータ型を変更する...
-
long型のデータをバイト型の配...
-
C言語 構造体の中に共用体を定...
-
整数から16進数への変換 現在c...
-
ヘッダファイルと構造体
-
構造体の代入と比較
-
winsockのsendtoで送れるデータ型
-
C++ 構造体の一括初期化 {0}
-
構造体のポインタにNULLが入らない
-
セグメントエラー
-
関数から配列を返すには?
-
ExcelVBAで質問です。離れた二...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのプログラムで、DIAG = 1# ...
-
Integer変数をカラにしたいので...
-
C++ 構造体の一括初期化 {0}
-
long型のデータをバイト型の配...
-
「#undef」と「#define」の使い...
-
構造体のデータを丸ごとコピー...
-
VBAにてcolorindexを変数に格納...
-
C言語 構造体の中に共用体を定...
-
値が代入されてない時
-
異なる構造体のデータのコピー
-
typedefをプログラム中で解除す...
-
構造体のポインタにNULLが入らない
-
charとucharの違い
-
整数から16進数への変換 現在c...
-
VBAの変数のデータ型を変更する...
-
VB.NETのStructureというのはど...
-
構造体を型の異なる構造体に代入
-
日付チェック関数について
-
ユーザー定義型変数の一括初期化
-
構造体の初期化方法について
おすすめ情報