如何在C/C++中将非ASCII字符注入字符串文字

7 c c++

我有一个读取字符数组的程序.我需要内存中字符串的值等于十六进制0x01020304,它们都是非ASCII字符.所以问题是,如何在运行时将非ASCII字符传递给字符串文字变量?

ava*_*kar 17

使用转义序列.确保按正确顺序放置字符.

"\x01\x02\x03\x04"
Run Code Online (Sandbox Code Playgroud)

编辑:如果需要将序列放入现有的char数组中,只需将其分配即可.

char s[4];

// ... later ...
s[0] = 0x01;
s[1] = 0x02;
s[2] = 0x03;
s[3] = 0x04;
Run Code Online (Sandbox Code Playgroud)

不要试图通过强制转换为指定的号码s(int32_t *),char数组没有正确对齐.


Dav*_*ley 5

在 C 语言中,最简单的可能是使用十六进制转义符号: "\x01\x02\x03\x04"。(如果没有 x,这些值是八进制的,这在当今不太流行或不易于理解。)

或者,

char x[] = {1, 2, 3, 4, 0};
Run Code Online (Sandbox Code Playgroud)

应该可以工作(请注意,像这样初始化时必须包含空终止)。