VBのテキストボックスからバイト配列に16進数を入力するには?


koo  2005-06-28 22:12:24  No: 123109

VBのテキストボックスから
16進数をそのまま入力したいです。
バイト配列を使用すればよいのでしょうか?

やりたいことはVBの画面から16進数を入力し、
C++のDLLでCRC32を求めることです。
VBから16進数を入力してもDLLに値が渡った時に
文字コードになってしまい、上手くCRC32が算出できません。
質問の仕方が下手でごめんなさい。


マグ  2005-06-29 00:12:52  No: 123110

環境を記載してください。
VB6かVB.NET、どちらか分かりません。

VB.NETの場合で話を進めますが、
16進数の場合A〜Fまでと0〜9までがあります。
TextBoxに入力した場合、Unicode-???形式の文字コードで文字列型で
扱われます。
数値計算なで扱うにはキャストする必要が出てくる場合があります。

詳しい解答は
ソースを載せてくれないと、分かりません。


通ってみた  2005-06-29 02:08:04  No: 123111

テキストボックスはText1と仮定

Dim a As Long

a = Val("&h"+Text1.text)

とすると、入力した16進数を10進数にして変数aに代入できるので、それを使うというのはだめ?

16進数を入力しても結局テキストボックスは文字列でしかないから、10進数に変換しないと数値として使えないということかと勝手に判断してみた


マグ  2005-06-30 01:38:01  No: 123112

>C++のDLLでCRC32を求めることです。

C++で作成したDLLファイルがCRC32を求めるということは
分かってますが、問題として考えられるのは、
テキストボックスへの入力が16進数でも、DLLファイルへの入力は
10進数か16進数、どちらかが分からない、
また、ソースなどを記述していないので、返り値はどのように返ってくるのかも分からない。


Dental  2005-06-30 01:49:12  No: 123113

> 16進数をそのまま入力したいです。
> バイト配列を使用すればよいのでしょうか?
バイト型は、数値型の一種です。
数値に、「○進数」という概念はありません。(文字列にはありますけど)

こちらを読んでみてください。
http://www.gj.il24.net/~nakasima/prog/radix/index.htm

> VBから16進数を入力してもDLLに値が渡った時に
「16進数表記の文字列」を渡しているのですか?
それとも、数値の配列を渡しているのですか?

> 文字コードになってしまい、上手くCRC32が算出できません。
DLL側の仕様がわからない以上、これ以上の答えは望めないかと。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加