Kin*_*ere 5 c arrays string hex unsigned
我想初始化一个16字节的十六进制数组,尤其是0x20(空格字符)值。
正确的方法是什么?
unsigned char a[16] = {0x20};
Run Code Online (Sandbox Code Playgroud)
要么
unsigned char a[16] = {"0x20"};
Run Code Online (Sandbox Code Playgroud)
谢谢
定义这个,例如
unsigned char a[16] = {0x20, 0x41, 0x42, };
Run Code Online (Sandbox Code Playgroud)
将如图所示初始化前三个元素,并将其余元素初始化为0.
你的第二种方式
unsigned char a[16] = {"0x20"};
Run Code Online (Sandbox Code Playgroud)
不会做你想做的事:它只是用四个字符定义了一个以空字符结尾的字符串0x20,编译器不会把它当作一个十六进制值。
有一个称为指定初始化程序的GNU扩展。默认情况下启用gcc
有了这个,你可以在表单中初始化你的数组
unsigned char a[16] = {[0 ... 15] = 0x20};
Run Code Online (Sandbox Code Playgroud)
unsigned char a[16] = {0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20};
Run Code Online (Sandbox Code Playgroud)
或者
unsigned char a[16] = "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20";
Run Code Online (Sandbox Code Playgroud)