0

"03FE"16 進数値を保持するような文字列があります。この文字列を 2 つの部分に分割し、それぞれの部分を同等の 16 進数に変換する必要があります。

つまり、0x03ある変数と0xFE別の変数が必要です。

たとえば、文字列を分割する必要がなければ、次のようにします。

 char *p;
 uint32_t uv=0;
 uv=strtoul(&string_to_convert, &p, 16);

文字列を分割する必要がある場合、どうすればよいですか?

4

2 に答える 2

5

strtoul代わりに次の出力を分割します。

uint8_t uv_hi = uv >> 8;
uint8_t uv_lo = uv & 0xFF;
于 2015-06-10T05:54:07.703 に答える
1

おもう

  • 文字列をバイト トークンn+1に分割する、length の 1 つの追加バッファーを作成できます。n
  • 文字を一時バッファに出力するために使用snprintf()します。n
  • strtoul()一時バッファの内容を 16 進値に変換するために使用します。
  • トークンが残るまで繰り返します。

このようにして、任意の長さのソース文字列をトークン化してトークンに変換し、それらを 16 進数値に変換する一般的な方法を使用できます。

于 2015-06-10T05:53:41.783 に答える