掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
.net chr() asc()について (ID:107769)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
データ型を間違えているのでは無いでしょうか。 「Integer型の-32079」をHex関数にかければ、"82B1" になりますが、 「Long型の-32079」ならば、"FFFF82B1" です。 そしてVB6の場合、Asc関数の戻り値は、Integer型です。 一方、&HFFFF82B1 という数値は通常、Long型となります。 > chr(33457) '"こ" > という風になるのですが^^ 『Debug.Print TypeName(33457)』を試してみるとわかるかと思いますが、 33457はLong型です。 Chr関数は、16bit(2バイト)の整数値を受け取り、対応する文字を1つ返します。 この時、受け取る整数値は、本来の仕様から言えば、 符号付き16bit整数なら -32768〜32767、 符号無し整数なら 0〜65535という範囲になるはずです。 しかし、VBには「符号無し16bit整数」がありませんから、この場合は 「符号付き32bit整数で、-32768〜65535の範囲」が利用されています。 > これはありうるのですか? Hex(CLng("33457")) と Hex(CInt("-32079")) は、いずれも "82B1" という値ですから、ごく正常な動作ですよ。 Option Explicit Private Sub Command1_Click() Dim I1 As Integer, I2 As Integer Dim L1 As Long, L2 As Long Dim S1 As String, S2 As String 'Integer型のまま16進数表現にして、 'それをInteger型の値に戻す場合 I1 = Asc("こ") S1 = Hex(I1) S2 = "&H" & S1 I2 = CInt(S2) Test I2 'Integer型のまま16進数表現にして、 'それをLong型の値に戻す場合 I1 = Asc("こ") S1 = Hex(I1) S2 = "&H" & S1 L2 = CLng(S2) Test L2 'Long型に変換してから16進数表現にして、 'それをLong型の値に戻す場合 I1 = Asc("こ") L1 = CLng(I1) S1 = Hex(L1) S2 = "&H" & S1 L2 = CLng(S2) Test L2 End Sub Private Sub Test(ByVal Value As Variant) Dim S As String S = TypeName(Value) & "の「" & CStr(Value) & "」は、" S = S & "Chr関数に渡すと『" & Chr(Value) & "』になります。" MsgBox S, vbInformation End Sub > http://www10.ocn.ne.jp/~godspeed/downloads.htm > UPしたので試してみてください。 ……って、どれの事でしょう? (;_;) # 「暗号機」かな。。。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.