毎度ばかばかしい質問で申し訳ありません。
textboxのtextが例えば、3f(16進数)と入力されていた場合、2進数で表すと、111111になりますが、そういうふうに表示したいのですが何かいい方法はありますか?
また、逆に111111と入力した場合に、その値を16進数で表示するのに、何かいい方法はありますか?
よかったら、教えてください。
えーっと、今手元に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
ごめんなさい、予想以上に長文でした^^;
編集 削除大変長いプログラムありがとうございました。
いつもお手数かけますが、今後ともよろしくお願いします。
vbだとoctは8進数なんです。
もうちょっと考えてみます。
あらら…。(Perlも8進数だったかも^^;名前だけ見てすぐ書いたので…)
2進数から10進数の計算方法は覚えてますけど、
(1けた目が2の1乗、2けた目が2の2乗…となっているとのことです)
逆はどうだったっけ…。
逆に計算すれば、わかるんですけど…。
ごめんなさい、上のもうろおぼえです^^;
念のため確認してからつかってください^^;
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でしょう)
分からないところが在れば質問を。
出来ました。
ありがとうございました。