■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#10275-032ビット初心者さくら子2000-05-10(水) 15:02
     #10276-0RE#10275:32ビットぼの2000-05-10(水) 15:31
     #10287-0RE#10276:32ビット お礼初心者さくら子2000-05-10(水) 16:58
     #10288-0RE#10287:32ビット (補足)ぼの2000-05-10(水) 17:42
     #10313-0RE#10288:32ビット (補足)初心者さくら子2000-05-11(木) 09:23
     #10314-0RE#10313:32ビット (補足)しげ2000-05-11(木) 09:36
     #10375-0RE#10314:32ビット (補足)初心者さくら子2000-05-12(金) 10:45
     #10378-0RE#10375:32ビット (補足)どらお2000-05-12(金) 10:55
     #10382-0RE#10378:32ビット (補足)初心者さくら子2000-05-12(金) 12:22
     #10383-0RE#10382:32ビット (補足)しげ2000-05-12(金) 12:57
     #10385-0RE#10383:32ビット (補足)初心者さくら子2000-05-12(金) 13:18
     #10384-0RE#10383:32ビット (補足)初心者さくら子2000-05-12(金) 13:18
     #10386-0RE#10385:32ビット (補足)ももたろ2000-05-12(金) 13:40
     #10388-0RE#10386:32ビット (補足)自己レス&おわび&お礼初心者さくら子2000-05-12(金) 13:56
     #10389-0RE#10388:32ビット (補足)自己レス&おわび&お礼どらお2000-05-12(金) 14:05
     #10391-0RE#10388:32ビット (補足)自己レス&おわび&お礼ももたろ2000-05-12(金) 14:08
#10275-0
32ビット
n値に "FFFFFFFF"と代入されたら
n=n AND FFFF
をして上4桁を消してあげるということなのですが・・・
問題がおこりました。

Dim a As String
Dim n As Double

a="FFFFFFFF"として

'必ず先頭に"0"付ける→ 0FFFFFFFF
a = "0" & a

'ダブル型
n = CDbl("&h" & a)

だと nに−1が入ってしまいます。
#−1を回避するためにわざと先頭に0を付けたのですが
−1を出さないためにはどうすればよいでしょうか?
#10276-0
RE#10275:32ビット
> a="FFFFFFFF"として
> 
> '必ず先頭に"0"付ける→ 0FFFFFFFF
> a = "0" & a
> n = CDbl("&h" & a)
> だと nに−1が入ってしまいます。

んー、というか、FFFFFFFFは−1だからこれで正常です(^^;)


> #−1を回避するためにわざと先頭に0を付けたのですが
> −1を出さないためにはどうすればよいでしょうか?

debug.Print &hFFFFFFFF& and &h0000FFFF&

を実行してみましょう。
#10287-0
RE#10276:32ビット お礼
>> a="FFFFFFFF"として
>> 
>> '必ず先頭に"0"付ける→ 0FFFFFFFF
>> a = "0" & a
>> n = CDbl("&h" & a)

>debug.Print &hFFFFFFFF& and &h0000FFFF&

いままで aをLongまたはDouble(先頭に0をつけるため)
に変換してから ANDをしていました。
直接 &hをつけて ANDができるということですね?

n値は 最後に必ずLongかDoubleに変換しなきゃ
だめだったのですが(そのあと比較があるため)
どうやら仕様変更になりそうです。
ホトト。

ぼのさんありがとうございました。_(._.)_
#10288-0
RE#10287:32ビット (補足)
> >debug.Print &hFFFFFFFF& and &h0000FFFF&
> いままで aをLongまたはDouble(先頭に0をつけるため)
> に変換してから ANDをしていました。
> 直接 &hをつけて ANDができるということですね?

最後に&が有るか無いかでも結果は変わります(^^;)

 &hFFFFFFFF& and &h0000FFFF& → 65535
 &hFFFFFFFF  and &h0000FFFF  → −1

ご注意あれ。
#10313-0
RE#10288:32ビット (補足)
おはようございます。

> 最後に&が有るか無いかでも結果は変わります(^^;)
>  &hFFFFFFFF& and &h0000FFFF& → 65535
>  &hFFFFFFFF  and &h0000FFFF  → −1

ヘルプで探しましたが、キーワード検索できませんでした。
申し訳有りませんがご説明いただけませんでしょうか?(T_T)
#10314-0
RE#10313:32ビット (補足)
> おはようございます。
> 
> > 最後に&が有るか無いかでも結果は変わります(^^;)
> >  &hFFFFFFFF& and &h0000FFFF& → 65535
> >  &hFFFFFFFF  and &h0000FFFF  → −1
> 
> ヘルプで探しましたが、キーワード検索できませんでした。
> 申し訳有りませんがご説明いただけませんでしょうか?(T_T)


後ろの&は型宣言文字です。
十六進数標記での省略した場合、8桁以下は整数型と見なされます。

&hFFFFFFFF&   → 長整数型(Long) → 65536
&hFFFFFFFF    → 整数型(Integer) → -1


蛇足ですが、その他に
% 整数型
@ 通貨型
$ 文字列型
! 単精度浮動小数点数型
# 倍精度浮動小数点数型
となっています。
#10375-0
RE#10314:32ビット (補足)
またまたおはようございます。

> > > 最後に&が有るか無いかでも結果は変わります(^^;)
> > >  &hFFFFFFFF& and &h0000FFFF& → 65535
> > >  &hFFFFFFFF  and &h0000FFFF  → −1
> 後ろの&は型宣言文字です。
> 十六進数標記での省略した場合、8桁以下は整数型と見なされます。
ありがとうございます。知りませんでした(^^ゞ

> &hFFFFFFFF&   → 長整数型(Long) → 65536
> &hFFFFFFFF    → 整数型(Integer) → -1
なるほど・・・・非常にわかりやすいです。

で・・・・ 今はなんとかその標記はわかったのですが、
構文エラー(型が違います)とでてしまいます。

a As String
n As Long

aはStringで "FFFFFFFF"と入ってるとします。
これを 上の4桁を消すために nに代入して
AND FFFFをしたいのですが・・・・・

とにかく &hFFFFFFFF&   をですね・・・
FFFFFFFFは aというStringに入ってるときの書き方がわかりませんっ。
こんぐらいは自分でわかると思ってたんですけど、、、1日たった今でもわかりません、(T_T)
#説明がへたくそですいません。
#10378-0
RE#10375:32ビット (補足)
これでいけると思います。
n = CLng("&h" & a)

ちなみに、CLngで明示的にLong型に変更しているので型指定文字はいりません。
#10382-0
RE#10378:32ビット (補足)
> これでいけると思います。
> n = CLng("&h" & a)
わかりました。ありがとうございます。

> ちなみに、CLngで明示的にLong型に変更しているので型指定文字はいりません。
・・・・・うむむ。

質問を変えますです。

a As String
b As String
n As Long

aには FFFFFFFFの文字列が入っています。
bには FFFFの文字列が入っています。

aの上4ケタを消したい場合は、
aに bの値の ANDをしてあげたいのです。
ANDして出た答えは さらに aに入れてあげます。

どうすればいいのでしょうか・・・・
と質問したいところですが、ちょっとがんばって考えてますが

 わからない所は
1, n = CLng("&h" & a) And CLng("&h" & a)はエラー

2.
> &hFFFFFFFF&   → 長整数型(Long) → 65536
> &hFFFFFFFF    → 整数型(Integer) → -1
では aを−1にしないための構文がわからない

なんでもスイマセン。
よろしくお願いいたします。
#10383-0
RE#10382:32ビット (補足)
> 
> > これでいけると思います。
> > n = CLng("&h" & a)
> わかりました。ありがとうございます。
> 
> > ちなみに、CLngで明示的にLong型に変更しているので型指定文字はいりません。
> ・・・・・うむむ。
> 
> 質問を変えますです。
> 
> a As String
> b As String
> n As Long
> 
> aには FFFFFFFFの文字列が入っています。
> bには FFFFの文字列が入っています。
> 
> aの上4ケタを消したい場合は、
> aに bの値の ANDをしてあげたいのです。
> ANDして出た答えは さらに aに入れてあげます。
> 
> どうすればいいのでしょうか・・・・
> と質問したいところですが、ちょっとがんばって考えてますが
> 
>  わからない所は
> 1, n = CLng("&h" & a) And CLng("&h" & a)はエラー
> 
> 2.
> > &hFFFFFFFF&   → 長整数型(Long) → 65536
> > &hFFFFFFFF    → 整数型(Integer) → -1
> では aを−1にしないための構文がわからない
> 
> なんでもスイマセン。
> よろしくお願いいたします。
> 


ちゃはは、よく見たら F が8個並んでいるのね?御免なさい勘違いしていました。
&hFFFFFFFF は長整数型(Long)で -1 です。

整数型(Integer)は &h0〜&hFFFF でした。
御免なさい。m(__)m
#10385-0
RE#10383:32ビット (補足)
> 
> ちゃはは、よく見たら F が8個並んでいるのね?御免なさい勘違いしていました。
> &hFFFFFFFF は長整数型(Long)で -1 です。
> 
> 整数型(Integer)は &h0〜&hFFFF でした。
> 御免なさい。m(__)m

いえいえ わたしもよくみてませんでした
ごめんなさいっす。

でもいまだによくわかりません。
FFFFFFFFを &FFFFした結果はどうだせばいいのでしょ??(T_T)
#10384-0
RE#10383:32ビット (補足)
> 
> ちゃはは、よく見たら F が8個並んでいるのね?御免なさい勘違いしていました。
> &hFFFFFFFF は長整数型(Long)で -1 です。
> 
> 整数型(Integer)は &h0〜&hFFFF でした。
> 御免なさい。m(__)m

いえいえ わたしもよくみてませんでした
ごめんなさいっす。

でもいまだによくわかりません。
FFFFFFFFを &FFFFした結果はどうだせばいいのでしょ??(T_T)
#10386-0
RE#10385:32ビット (補足)
> でもいまだによくわかりません。
> FFFFFFFFを &FFFFした結果はどうだせばいいのでしょ??(T_T)
Debug.Print Hex(CLng("&hFFFFFFFF") And CLng("&hFFFF"))

Hex関数で16進数に変換してあげればいいと思いますよ。
#10388-0
RE#10386:32ビット (補足)自己レス&おわび&お礼
えと・・・
> Hex関数で16進数に変換してあげればいいと思いますよ。
ありがとうございます。
解決いたしました。

結果は
n As Variant: a As String
a="FFFF"
n="FFFFFFFF"
結果をまたnに代入してあげたかったので・・・

n = CStr(Hex(CLng("&h" & n) And CLng("&h" & a)))
でnは"FFFF"になりました。
#Variantでよかったのかな?とちょっと不安ですが。

お騒がせしてスミマセン。
#10389-0
RE#10388:32ビット (補足)自己レス&おわび&お礼
今、一番元の質問を見てみたのですが・・・(^^;)
もしかして、下4桁を取りたいだけであれば、これじゃだめなんでしょうか?(^^;)
strRet = Right$("0000" & s,4)
#10391-0
RE#10388:32ビット (補足)自己レス&おわび&お礼
> n = CStr(Hex(CLng("&h" & n) And CLng("&h" & a)))
> でnは"FFFF"になりました。
> #Variantでよかったのかな?とちょっと不安ですが。
CStrで文字型にしてるわけですから、String型でかまわないと思いますよ。

# ってゆーか、Hex$を使えばわざわざCStrで型変換する必要もない(^^;;
このページと関連する記事:
#41233-0EM_GETSELのバグ?回避について2001-04-04(水) 00:11
#868-1-2147483648を4294967295と認識するには??1999-07-06(火) 13:19
#40694-0CIntとVal、CStrとStr2001-03-23(金) 09:24
#401-1変数に16進数を代入する時の制限について1999-06-25(金) 15:53
#18207-0オーバーフロー2001-10-10(水) 15:11
#16320-0これはバグ???(Int関数) 2000-02-17(木) 13:06
#10660-0Date(時間)のインクリメント2000-05-17(水) 14:04
#42218-0オーバーフロー 何故?(ToT)2001-04-24(火) 15:30
#28309-0文字列のビット操作2000-08-21(月) 16:08
#29298-0日本語の16進数変換2000-09-05(火) 11:34
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)