VBのテキストボックスから
16進数をそのまま入力したいです。
バイト配列を使用すればよいのでしょうか?
やりたいことはVBの画面から16進数を入力し、
C++のDLLでCRC32を求めることです。
VBから16進数を入力してもDLLに値が渡った時に
文字コードになってしまい、上手くCRC32が算出できません。
質問の仕方が下手でごめんなさい。
環境を記載してください。
VB6かVB.NET、どちらか分かりません。
VB.NETの場合で話を進めますが、
16進数の場合A〜Fまでと0〜9までがあります。
TextBoxに入力した場合、Unicode-???形式の文字コードで文字列型で
扱われます。
数値計算なで扱うにはキャストする必要が出てくる場合があります。
詳しい解答は
ソースを載せてくれないと、分かりません。
テキストボックスはText1と仮定
Dim a As Long
a = Val("&h"+Text1.text)
とすると、入力した16進数を10進数にして変数aに代入できるので、それを使うというのはだめ?
16進数を入力しても結局テキストボックスは文字列でしかないから、10進数に変換しないと数値として使えないということかと勝手に判断してみた
>C++のDLLでCRC32を求めることです。
C++で作成したDLLファイルがCRC32を求めるということは
分かってますが、問題として考えられるのは、
テキストボックスへの入力が16進数でも、DLLファイルへの入力は
10進数か16進数、どちらかが分からない、
また、ソースなどを記述していないので、返り値はどのように返ってくるのかも分からない。
> 16進数をそのまま入力したいです。
> バイト配列を使用すればよいのでしょうか?
バイト型は、数値型の一種です。
数値に、「○進数」という概念はありません。(文字列にはありますけど)
こちらを読んでみてください。
http://www.gj.il24.net/~nakasima/prog/radix/index.htm
> VBから16進数を入力してもDLLに値が渡った時に
「16進数表記の文字列」を渡しているのですか?
それとも、数値の配列を渡しているのですか?
> 文字コードになってしまい、上手くCRC32が算出できません。
DLL側の仕様がわからない以上、これ以上の答えは望めないかと。
ツイート | ![]() |