-1

タイトルにあるように、C++ バイトの文字列をバイト データ型に変換し、バイト数をカウントしようとしています。テキストボックスから取得した文字列には、一連の 1 バイトの 16 進数が含まれますが、バイトとして送信する必要があります。

char packet_data[200];
HWND hTextBox2 = GetDlgItem(TabOneDlg,IDC_EDIT3);

SendMessageA(hTextBox2, WM_GETTEXT, (WPARAM)200, (LPARAM)packet_data);

それが入力値を取得する方法です(私はwin32 APIを使用しています-管理されていないフォーム)

入力文字列の例 (16 進数)

AA BB CC DD - 4 bytes !

SHORT では、これを行いたい: 16 進数のテキスト表現を含む文字列を取得し、16 進数の各テキスト表現を「通常の」数値に変換したい。

4

1 に答える 1

2

16 進数がスペースで区切られていることが確実な場合 (質問に示されているように)、それらを抽出するのは簡単な問題です。C++ で最も簡単な方法はstd::istringstream、通常の入力演算子を使用すること>>です。

std::istringstream istr(packet_data);
std::vector<uint8_t> data;

uint8_t i;
while (istr >> std::hex >> i)
    data.push_back(i);

上記のコードの後、ベクターdataには文字列からのすべてのデータが含まれます。たとえば、ソケット (または同様のもの) を介してデータを送信する必要がある場合は、 を使用std::vector::dataしてデータへの生のポインターを取得できます (または&data[0]data関数が存在しない場合は を使用します)。バイト数は から入手できますstd::vector::size

于 2013-01-19T19:33:55.757 に答える