textboxのデータを2進数で表示するには?

解決


ひろつの  2001-10-29 13:52:30  No: 103692  IP: [192.*.*.*]

毎度ばかばかしい質問で申し訳ありません。
textboxのtextが例えば、3f(16進数)と入力されていた場合、2進数で表すと、111111になりますが、そういうふうに表示したいのですが何かいい方法はありますか?
また、逆に111111と入力した場合に、その値を16進数で表示するのに、何かいい方法はありますか?
よかったら、教えてください。

編集 削除
たかみちえ  2001-10-29 23:49:29  No: 103693  IP: [192.*.*.*]

えーっと、今手元にPerlの本しかないので、
  ちょっとあいまいですけど、
  HexとOctという関数があります。
  Hexで16進数に、Octで2進数に変換します。たしか。

  このうち、HexはVBで実装してあるはずです。Octはちょっとあいまいですけど、たぶんあります。

  ただ2進数は、なければ計算で求めれば出せると思います。
Octがなかったり、違うものだったら(8進数だったかも)、計算してください^^;

  ところで、Hexですけど、あのじょうたいだと、あんまりながーい文字列表示には適していません。
内部で計算するので、どうしても遅くなるとのことです。

  わたしはテーブルを使ったほうがいいというのをQ&A掲示板で言われたので、作ってみました。
自分で作っても、ばかばかしいだけなので^^;

以下に書きます。とっても長い(かつ、単純作業)なので、
返信するときは、スクロールバーを移動させるかして、ずっと下におくってください^^;
Public Function Hexs(bytenum, Optional SBrink As Boolean = True) As String
    Select Case bytenum
    Case 0: Hexs = IIf(SBrink, "00", "&0.")
    Case 1: Hexs = IIf(SBrink, "01", "&1.")
    Case 2: Hexs = IIf(SBrink, "02", "&2.")
    Case 3: Hexs = IIf(SBrink, "03", "&3.")
    Case 4: Hexs = IIf(SBrink, "04", "&4.")
    Case 5: Hexs = IIf(SBrink, "05", "&5.")
    Case 6: Hexs = IIf(SBrink, "06", "&6.")
    Case 7: Hexs = IIf(SBrink, "07", "&7.")
    Case 8: Hexs = IIf(SBrink, "08", "&8.")
    Case 9: Hexs = IIf(SBrink, "09", "&9.")
    Case 10: Hexs = IIf(SBrink, "0A", "&A.")
    Case 11: Hexs = IIf(SBrink, "0B", "&B.")
    Case 12: Hexs = IIf(SBrink, "0C", "&C.")
    Case 13: Hexs = IIf(SBrink, "0D", "&D.")
    Case 14: Hexs = IIf(SBrink, "0E", "&E.")
    Case 15: Hexs = IIf(SBrink, "0F", "&F.")
    End Select
    If Not SBrink Then Exit Function
    Select Case bytenum
    Case 16: Hexs = "10"
    Case 17: Hexs = "11"
    Case 18: Hexs = "12"
    Case 19: Hexs = "13"
    Case 20: Hexs = "14"
    Case 21: Hexs = "15"
    Case 22: Hexs = "16"
    Case 23: Hexs = "17"
    Case 24: Hexs = "18"
    Case 25: Hexs = "19"
    Case 26: Hexs = "1A"
    Case 27: Hexs = "1B"
    Case 28: Hexs = "1C"
    Case 29: Hexs = "1D"
    Case 30: Hexs = "1E"
    Case 31: Hexs = "1F"
    Case 32: Hexs = "20"
    Case 33: Hexs = "21"
    Case 34: Hexs = "22"
    Case 35: Hexs = "23"
    Case 36: Hexs = "24"
    Case 37: Hexs = "25"
    Case 38: Hexs = "26"
    Case 39: Hexs = "27"
    Case 40: Hexs = "28"
    Case 41: Hexs = "29"
    Case 42: Hexs = "2A"
    Case 43: Hexs = "2B"
    Case 44: Hexs = "2C"
    Case 45: Hexs = "2D"
    Case 46: Hexs = "2E"
    Case 47: Hexs = "2F"
    Case 48: Hexs = "30"
    Case 49: Hexs = "31"
    Case 50: Hexs = "32"
    Case 51: Hexs = "33"
    Case 52: Hexs = "34"
    Case 53: Hexs = "35"
    Case 54: Hexs = "36"
    Case 55: Hexs = "37"
    Case 56: Hexs = "38"
    Case 57: Hexs = "39"
    Case 58: Hexs = "3A"
    Case 59: Hexs = "3B"
    Case 60: Hexs = "3C"
    Case 61: Hexs = "3D"
    Case 62: Hexs = "3E"
    Case 63: Hexs = "3F"
    Case 64: Hexs = "40"
    Case 65: Hexs = "41"
    Case 66: Hexs = "42"
    Case 67: Hexs = "43"
    Case 68: Hexs = "44"
    Case 69: Hexs = "45"
    Case 70: Hexs = "46"
    Case 71: Hexs = "47"
    Case 72: Hexs = "48"
    Case 73: Hexs = "49"
    Case 74: Hexs = "4A"
    Case 75: Hexs = "4B"
    Case 76: Hexs = "4C"
    Case 77: Hexs = "4D"
    Case 78: Hexs = "4E"
    Case 79: Hexs = "4F"
    Case 80: Hexs = "50"
    Case 81: Hexs = "51"
    Case 82: Hexs = "52"
    Case 83: Hexs = "53"
    Case 84: Hexs = "54"
    Case 85: Hexs = "55"
    Case 86: Hexs = "56"
    Case 87: Hexs = "57"
    Case 88: Hexs = "58"
    Case 89: Hexs = "59"
    Case 90: Hexs = "5A"
    Case 91: Hexs = "5B"
    Case 92: Hexs = "5C"
    Case 93: Hexs = "5D"
    Case 94: Hexs = "5E"
    Case 95: Hexs = "5F"
    Case 96: Hexs = "60"
    Case 97: Hexs = "61"
    Case 98: Hexs = "62"
    Case 99: Hexs = "63"
    Case 100: Hexs = "64"
    Case 101: Hexs = "65"
    Case 102: Hexs = "66"
    Case 103: Hexs = "67"
    Case 104: Hexs = "68"
    Case 105: Hexs = "69"
    Case 106: Hexs = "6A"
    Case 107: Hexs = "6B"
    Case 108: Hexs = "6C"
    Case 109: Hexs = "6D"
    Case 110: Hexs = "6E"
    Case 111: Hexs = "6F"
    Case 112: Hexs = "70"
    Case 113: Hexs = "71"
    Case 114: Hexs = "72"
    Case 115: Hexs = "73"
    Case 116: Hexs = "74"
    Case 117: Hexs = "75"
    Case 118: Hexs = "76"
    Case 119: Hexs = "77"
    Case 120: Hexs = "78"
    Case 121: Hexs = "79"
    Case 122: Hexs = "7A"
    Case 123: Hexs = "7B"
    Case 124: Hexs = "7C"
    Case 125: Hexs = "7D"
    Case 126: Hexs = "7E"
    Case 127: Hexs = "7F"
    Case 128: Hexs = "80"
    Case 129: Hexs = "81"
    Case 130: Hexs = "82"
    Case 131: Hexs = "83"
    Case 132: Hexs = "84"
    Case 133: Hexs = "85"
    Case 134: Hexs = "86"
    Case 135: Hexs = "87"
    Case 136: Hexs = "88"
    Case 137: Hexs = "89"
    Case 138: Hexs = "8A"
    Case 139: Hexs = "8B"
    Case 140: Hexs = "8C"
    Case 141: Hexs = "8D"
    Case 142: Hexs = "8E"
    Case 143: Hexs = "8F"
    Case 144: Hexs = "90"
    Case 145: Hexs = "91"
    Case 146: Hexs = "92"
    Case 147: Hexs = "93"
    Case 148: Hexs = "94"
    Case 149: Hexs = "95"
    Case 150: Hexs = "96"
    Case 151: Hexs = "97"
    Case 152: Hexs = "98"
    Case 153: Hexs = "99"
    Case 154: Hexs = "9A"
    Case 155: Hexs = "9B"
    Case 156: Hexs = "9C"
    Case 157: Hexs = "9D"
    Case 158: Hexs = "9E"
    Case 159: Hexs = "9F"
    Case 160: Hexs = "A0"
    Case 161: Hexs = "A1"
    Case 162: Hexs = "A2"
    Case 163: Hexs = "A3"
    Case 164: Hexs = "A4"
    Case 165: Hexs = "A5"
    Case 166: Hexs = "A6"
    Case 167: Hexs = "A7"
    Case 168: Hexs = "A8"
    Case 169: Hexs = "A9"
    Case 170: Hexs = "AA"
    Case 171: Hexs = "AB"
    Case 172: Hexs = "AC"
    Case 173: Hexs = "AD"
    Case 174: Hexs = "AE"
    Case 175: Hexs = "AF"
    Case 176: Hexs = "B0"
    Case 177: Hexs = "B1"
    Case 178: Hexs = "B2"
    Case 179: Hexs = "B3"
    Case 180: Hexs = "B4"
    Case 181: Hexs = "B5"
    Case 182: Hexs = "B6"
    Case 183: Hexs = "B7"
    Case 184: Hexs = "B8"
    Case 185: Hexs = "B9"
    Case 186: Hexs = "BA"
    Case 187: Hexs = "BB"
    Case 188: Hexs = "BC"
    Case 189: Hexs = "BD"
    Case 190: Hexs = "BE"
    Case 191: Hexs = "BF"
    Case 192: Hexs = "C0"
    Case 193: Hexs = "C1"
    Case 194: Hexs = "C2"
    Case 195: Hexs = "C3"
    Case 196: Hexs = "C4"
    Case 197: Hexs = "C5"
    Case 198: Hexs = "C6"
    Case 199: Hexs = "C7"
    Case 200: Hexs = "C8"
    Case 201: Hexs = "C9"
    Case 202: Hexs = "CA"
    Case 203: Hexs = "CB"
    Case 204: Hexs = "CC"
    Case 205: Hexs = "CD"
    Case 206: Hexs = "CE"
    Case 207: Hexs = "CF"
    Case 208: Hexs = "D0"
    Case 209: Hexs = "D1"
    Case 210: Hexs = "D2"
    Case 211: Hexs = "D3"
    Case 212: Hexs = "D4"
    Case 213: Hexs = "D5"
    Case 214: Hexs = "D6"
    Case 215: Hexs = "D7"
    Case 216: Hexs = "D8"
    Case 217: Hexs = "D9"
    Case 218: Hexs = "DA"
    Case 219: Hexs = "DB"
    Case 220: Hexs = "DC"
    Case 221: Hexs = "DD"
    Case 222: Hexs = "DE"
    Case 223: Hexs = "DF"
    Case 224: Hexs = "E0"
    Case 225: Hexs = "E1"
    Case 226: Hexs = "E2"
    Case 227: Hexs = "E3"
    Case 228: Hexs = "E4"
    Case 229: Hexs = "E5"
    Case 230: Hexs = "E6"
    Case 231: Hexs = "E7"
    Case 232: Hexs = "E8"
    Case 233: Hexs = "E9"
    Case 234: Hexs = "EA"
    Case 235: Hexs = "EB"
    Case 236: Hexs = "EC"
    Case 237: Hexs = "ED"
    Case 238: Hexs = "EE"
    Case 239: Hexs = "EF"
    Case 240: Hexs = "F0"
    Case 241: Hexs = "F1"
    Case 242: Hexs = "F2"
    Case 243: Hexs = "F3"
    Case 244: Hexs = "F4"
    Case 245: Hexs = "F5"
    Case 246: Hexs = "F6"
    Case 247: Hexs = "F7"
    Case 248: Hexs = "F8"
    Case 249: Hexs = "F9"
    Case 250: Hexs = "FA"
    Case 251: Hexs = "FB"
    Case 252: Hexs = "FC"
    Case 253: Hexs = "FD"
    Case 254: Hexs = "FE"
    Case 255: Hexs = "FF"
   End Select
End Function

編集 削除
たかみちえ  2001-10-29 23:50:27  No: 103694  IP: [192.*.*.*]

ごめんなさい、予想以上に長文でした^^;

編集 削除
ひろつの  2001-10-30 08:58:15  No: 103695  IP: [192.*.*.*]

大変長いプログラムありがとうございました。
いつもお手数かけますが、今後ともよろしくお願いします。
vbだとoctは8進数なんです。
もうちょっと考えてみます。

編集 削除
たかみちえ  2001-10-30 17:55:22  No: 103696  IP: [192.*.*.*]

あらら…。(Perlも8進数だったかも^^;名前だけ見てすぐ書いたので…)
  2進数から10進数の計算方法は覚えてますけど、
(1けた目が2の1乗、2けた目が2の2乗…となっているとのことです)
逆はどうだったっけ…。
逆に計算すれば、わかるんですけど…。

編集 削除
たかみちえ  2001-10-30 17:57:34  No: 103697  IP: [192.*.*.*]

ごめんなさい、上のもうろおぼえです^^;
念のため確認してからつかってください^^;

編集 削除
あるる  2001-10-31 20:08:33  No: 103698  IP: [192.*.*.*]

2進数=>16進数に変換する関数です。

form に  button を張り付けて以下のコードを入力
<-----------------------------------------------------
Private Sub CommandButton1_Click()

BinA = InputBox("2進数を入力", , , Width, Height)
HexA = BinToHex(BinA)
MsgBox (BinA + " = " + HexA)

End Sub


Private Function BinToHex(ByVal StrBin As String) As String
 '
 '********* 引数  StrBin 2進数文字列
 '********* 返値  16進数文字列
 
 
 Num = 0: f = ""
 Length = Len(StrBin)
 
 For n = 0 To Length - 1
  f = Mid$(StrBin, Length - n, 1)
  If f = "1" Then Num = Num + 2^n   '  <==ここがミソ
 Next n

 BinToHex = Hex$(Num)
 
End Function
----------------------------------------------------------->
VBAで動作確認(VBでもOKでしょう)
分からないところが在れば質問を。

編集 削除
ひろつの  2001-11-02 09:09:42  No: 103699  IP: [192.*.*.*]

出来ました。
ありがとうございました。

編集 削除