我有一个变量char* etag="8a964ee2a5e88be344f36c22562a6486";.
如何将其转换为数组byte,byte实际上在哪里typedef unsigned char byte?
byte bytes[16];
int i=0;
for (;i<16;++i) {
int value;
sscanf(etag+2*i,"%02x",&value);
bytes[i] = value;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
如果我理解正确,你想要将16个字母的十六进制字符组组成字节,然后将这些字节存储在char数组中.试试这个:
char *str = "long hex string";
int i;
unsigned char bytes[16];
char tmp[3] = { 0 };
for(i = 0; i < 16; i++)
{
memcpy(tmp, str + 2 * i, 2);
bytes[i] = (unsigned char)strtol(tmp, NULL, 16);
}
Run Code Online (Sandbox Code Playgroud)