我遇到了存储中间有0的十六进制值的问题。 1)我以大小为17的macAddress的形式获得字符串的值。 2)将它们转换为十六进制并将其存储为大小为6的字符串。 当在中间添加0时,不能在0之后存储它。仅存储0之前的值。 以下是编写的示例代码:
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
int hestToMacStr(char **charPtrPtr)
{
unsigned int mac0, mac1, mac2, mac3, mac4, mac5;
char *str = *charPtrPtr;
/* initialize the variables */
mac0 = mac1 = mac2 = mac3 = mac4 = mac5 = 0;
sscanf( *charPtrPtr, "%x:%x:%x:%x:%x:%x", &mac0, &mac1, &mac2, &mac3, &mac4, &mac5 );
str[0] = mac0 & 0xFF;
str[1] = mac1 & 0xFF;
str[2] = mac2 & 0xFF;
str[3] = mac3 & 0xFF;
str[4] = mac4 & 0xFF;
str[5] = mac5 & 0xFF;
str[6] = '\0';
printf("charPtrPtr: %s, str: %s, mac: %x,%x,%x,%x,%x,%x\n", *charPtrPtr, str, str[0], str[1], str[2], str[3], str[4], str[5]);
}
int main()
{
char *haystack = ( char * ) malloc (18);
int i = 0;
sprintf(haystack,"66:66:66:00:66:66"); //code1
sprintf(haystack,"66:66:66:66:66:66"); //code2
hestToMacStr(&haystack);
printf("haystack: %s, Mac: %02x:%02x:%02x:%02x:%02x:%02x\n", haystack, haystack[0], haystack[1], haystack[2], haystack[3], haystack[4], haystack[5]);
free(haystack);
return(0);
}
Output1:
charPtrPtr: fff, str: fff, mac: 66,66,66,0,66,66
haystack: fff, Mac: 66:66:66:00:66:66
Output2:
charPtrPtr: ffffff, str: ffffff, mac: 66,66,66,66,66,66
haystack: ffffff, Mac: 66:66:66:66:66:66
output1用于code1,output2用于code2。 对于code1,预期的output1是:fff0ff。任何人请指导我如何将所有值存储到我的charPtr。
谢谢,丹尼斯