0

実際の16進値に対応する16進エスケープシーケンスを作成しようとしています。

16進エスケープシーケンスを実際に使用したことはありませんが、最初の試みとして、16進値0x12345678を作成したいと思いました。

次のものが必要ですか?:

hex_value = "\x30\x78\x31\x32\x33\x34\x35\x36\x37\x38"

ここで文字の16進値を見つけました:http ://www.asciitable.com/

4

1 に答える 1

0

16 進値の文字列を作成するには、少なくとも 2 つの方法があります。

char a[] = { 0x12, 0x34, 0x56, 0x78, 0 };
char *aa = "\x12\x34\x56\x78";

0x裸の数値と文字列で使用することに注意してください\x

現在、a配列の最初の 4 バイトは、32 ビット整数値 0x12345678 に対応している場合と対応していない場合があります。「ビッグエンディアン」システムではそうしますが、「リトルエンディアン」システム (バイトが逆になる) ではそうしません。マルチバイト整数をメモリに配置する方法にはさまざまな規則があるためです。2 つの単語が 1 つの規則を使用して順序付けられ、単語内の 2 バイトが別の規則を使用して順序付けられる奇妙なシステムさえあります (どのシステムを使用するか、どの組み合わせを使用するかを忘れてしまいます)。

このプログラムは、コンパイルしてターゲット システムで実行すると、指定された整数に対して適切な 16 進エスケープ シーケンスを出力します。

#include <stdio.h>

int main() {
    int i = 0x12345678;
    unsigned char *p = (void *)&i;
    printf("\\x%2x\\x%2x\\x%2x\\x%2x\n", p[0], p[1], p[2], p[3]);
    return 0;
}
于 2013-03-16T04:43:31.380 に答える