• ベストアンサー

16進数を2進数に変換するコードを知りたい

16進数を2進数に変換するコードをselect caseを用いて作りました。 しかし、遅いです。 場合分けの考え方を利用して、例えば変数がFだったら・・みたいな感じで16個のcase全てを書いてみたのですが、もし他にもっと早く処理する方法が合ったら教えてください。 また、データ型はこれが最良でしょうか?? データ型 変数1、2 使用文字:相当長い文字列のためstring 変数3   使用文字:1-0,A-F,及び0000-1111:string 変数4、5 使用文字:1-1,000,000程度:integer

  • j-y-a
  • お礼率28% (56/197)

質問者が選んだベストアンサー

  • ベストアンサー
noname#39970
noname#39970
回答No.2

変数 x : 元の1桁の16進数に相当する数値(0~15) str$((x and 8)>>3) & str$((x and 4)>>2) & str$((x and 2)>>1) & str$(x and 1) v : 1桁の16進数文字列 x = CInt("&H" & v)

その他の回答 (1)

  • taunamlz
  • ベストアンサー率20% (175/843)
回答No.1

こんな技はどうですか? dd(Asc("0")) = "0000" dd(Asc("1")) = "0001" dd(Asc("2")) = "0010" dd(Asc("3")) = "0011" dd(Asc("4")) = "0100" dd(Asc("5")) = "0101" dd(Asc("6")) = "0110" dd(Asc("7")) = "0111" dd(Asc("8")) = "1000" dd(Asc("9")) = "1001" dd(Asc("10")) = "1010" dd(Asc("11")) = "1011" dd(Asc("12")) = "1100" dd(Asc("13")) = "1101" dd(Asc("14")) = "1110" dd(Asc("15")) = "1111" にしておいて、 label1.caption = dd(Asc(データ)) 見たいな感じだと分岐を使わない分早いかもしれないと思うのですが。

関連するQ&A

  • アスキーコードへの変換について VB6(初心者)

    変数文字列をアスキーコードの10進数であらわしたいのですが、どのようなプログラムをかけばいいのでしょうか? ネットで調べたのですが、よくわかりません。 たとえば hensuumojiretuという名前の変数文字列を作り、それをアスキーコードに変換するとしたらどのようなプログラムをかいたらよいのでしょうか。 hensuumojiretuは自分で入力する形にしたいです。 それがわかったら変換後のアスキーコードを変数文字列(数字?)として定義したいと思っています。 この本に載ってるとか、このサイトにあるよという情報でもよいのでどうかおしえてくださいおねがいします。

  • ASCIIコードについて

    VB6の質問です。 ↓例で、Record変数にASCIIコードを含んだ文字列が入ります。 Select文で各条件で、処理をしたいのですがASCIIコードの定義がわかりません。 ご教授していただないでしょか? Dim Record As String Private Sub test() ・ ・ Record = (STX)1234(ACK)5678(EOT)  ・ End Sub Select Record Case "(STX)" ← 'Case 02H?? ・ Case "(ACK)" ← 'Case 06H??  ・ Case "(EOT)" ← 'Case 03H?? ・ Case Else End Select

  • 2進数からアスキーコードへの変換についって

    趣味で電子工作を行っているものです。 picマイコンを使用して、A/D変換の結果10bitのデータを得ました。 8ビットのマイコンなので2つのレジスタに分かれてデータが格納されています。(上位2ビットと下位8ビット) この2進数のデータを10進数に変換し、一桁ごとにアスキーコードにして、シリアル通信を用いてPCに送りたいと思っています。 ここで、10bitのデータの2進数から10進数への変換。 10進数のデータを一桁ずつアスキーコードへ変換。 の2つのやり方がわかりません。 2進数のデータのままPCに送り、PCのソフト側で変換するほうが簡単なのですが、今回はPIC側で変換し、アスキーコードで送る必要があります。 プログラムに使用する言語はアセンブリです。 どなたか分かる方がいましたら教えてください。

  • 3進数を10進数に変換

    3進数や5進数のように2の階乗ではない任意の進数の文字列を、C言語のビットシフトを使って10進数に変換するプログラムについて、質問させていただきます。 ビットシフトを使わないで、任意の進数の文字列を10進数に変換する方法は分かっていますが、ビットシフトを使った方が非常に計算が高速で出来るので、ビットシフトを使いたいと思っています。 下記のプログラムは4進文字列を10進整数に変換するものです。2進、8進文字列の場合は、シフトするビット数を1ビット、3ビット(つまり、ans <<= 1、ans <<= 3)にすれば計算することが可能です。しかし、3進数や5進数の場合、いろいろと考えたのですが、どのようにすれば良いのか分かりません。 下記のプログラムのようにビットシフトを使って3進数や5進数の文字列を10進数に変換するには、どのように工夫すれば良いでしょうか? どなたかご教授をお願いいたします。 #define STRING_NUM 2 /* 文字列の長さ */ int main(void) { int i; int ans = 0; /* 10進数の整数 */ char buf[STRING_NUM]; /* 4進数の文字列 */ buf[0] = '3'; buf[1] = '1'; for ( i = 0 ; i < STRING_NUM; i++ ){ printf(" %c", buf[i]); } printf("\n"); for ( i = 0 ; i < STRING_NUM; i++ ){ if ( buf[i] == '0' ){ ans <<= 2; /* シフトするビット数 */ ans |= 0; } if ( buf[i] == '1' ){ ans <<= 2; ans |= 1; } if ( buf[i] == '2' ){ ans <<= 2; ans |= 2; } if ( buf[i] == '3' ){ ans <<= 2; ans |= 3; } } printf( "ans = %d\n", ans ); return 0; }

  • .NET 文字コードの変換

    VB2008で文字列を他の文字コードにする方法が知りたいです。 何かしての部分がわかりません。 VB2005でも使えるものだったらうれしいです。 Dim str_sjis as string Dim str_euc as string = "パソコン" '例えばEUC-JP '''何かして str_sjisにシフトJISで文字列が入っている。 .Netの文字コードの変換の仕方がごちゃごちゃして分かりづらいです。

  • 16進数の文字列をアスキーコード表を使用して変換

    16進数の文字列をアスキーコード表を使用して変換したいと思っています。 例えば 97 98 = ab 99 100 101 = cde 何か良い関数はありますか? また、文字列長も任意で変わるので、文字列長に応じて任意で 変換したいと思っています。 やはりマクロが必要ですか?

  • VC#で2進数の文字列をバイト列に変換する方法

    No.1021748で質問した者です。前回はバイト列を2進数の文字列に変換する方法を質問しましたが、今回はその逆の方法を教えて下さい。 例えば、stringに01101111という文字列が入ってる場合には、バイト列0x6Fに変換したいです。お願いします。

  • データ型変換

    String型のデータをInteger型の変数に入れたいのでが・・・。 '変数の宣言 Dim DataTable(2, 5) As String Dim made As Integer 'データ型変換 made = CInt(DataTable(1, 0)) このようにしたのですが、実行すると 『実行時エラー '13'  型が一致しません』 と表示され、デバックしてみるとココ↓ made = CInt(DataTable(1, 0)) が黄色くなります。 どうしたら上手く型変換ができるのでしょうか? ちなみに、VB6.0です。

  • JISコード変換について

    String str = "アイウエオ"; byte test[] = moji.getBytes("ISO2022JP"); String ret = new String(test); 上記のプログラムで半角カナをJISコードに変換すると 文字化けしているのですが、文字化けしないようにするにはどうしたらよいでしょうか。 なお、JISコードの String test = "アイウエオ"; ← "アイウエオ"はJISコード(文字化け無しの半角カナ文字) String ret = new String(test .getBytes("ISO2022JP"),"JISAutoDetect"); これで、文字化けせずUnicodeに変換できたのですが、単純に逆に変換しただけでは、半角カナの文字は、JISコードに変換すると文字化けしてしまうのでしょうか? どなたか教えて頂けないでしょうか?

    • ベストアンサー
    • Java
  • 10進数の数字列を二進数に変換する

    10進数の数字列"1234"を16進数に変換すると04D2となる と問題集に書かれていたのですがどのように求めているのでしょうか。 ちなみに、問題ではJISの文字コードで一旦変換してから二進数に 変換していましたがいまいち理解できませんでした。 1234ならば 1→0031 2→0032 3→0033 4→0034 と一旦変換して 04D2を求めていました。 よろしくお願いいたします。

専門家に質問してみよう