把Mac地址字符串轉換為占一個字節的十六進制數


把Mac地址字符串轉換為占一個字節的十六進制數(用指針函數返回值)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

unsigned char *getMac()
{
	char n[6][5];
       char mac[20]="80:32:C0:AF:55:AB";
       sscanf(mac,"%[^:]:%[^:]:%[^:]:%[^:]:%[^:]:%[^:]",n[0],n[1],n[2],n[3],n[4],n[5]);
   
	int i, j;
	int m[2];
	static unsigned char data[6]={0};  //需要定義成靜態變量,避免隨函數周期結束而收回達不到傳遞返回值的效果。靜態變量定義后不會隨着函數生命周期結束,而是進程生命周期結束而結束(相對於全局變量)
	for(i=0;i<6;i++)
	{
		for(j=0;j<2;j++)
		{
			if(n[i][j]=='0')
				m[j]=0;
			else if(n[i][j]=='1')
				m[j]=1;	
			else if(n[i][j]=='2')
				m[j]=2;	
			else if(n[i][j]=='3')
				m[j]=3;	
			else if(n[i][j]=='4')
				m[j]=4;	
			else if(n[i][j]=='5')
				m[j]=5;	
			else if(n[i][j]=='6')
				m[j]=6;	
			else if(n[i][j]=='7')
				m[j]=7;	
			else if(n[i][j]=='8')
				m[j]=8;	
			else if(n[i][j]=='9')
				m[j]=9;	
			else if((n[i][j]=='a') || (n[i][j]=='A'))
				m[j]=10;
			else if((n[i][j]=='b') || (n[i][j]=='B'))
				m[j]=11;
			else if((n[i][j]=='c') || (n[i][j]=='C'))
				m[j]=12;
			else if((n[i][j]=='d') || (n[i][j]=='D'))
				m[j]=13;
			else if((n[i][j]=='e') || (n[i][j]=='E'))
				m[j]=14;
			else if((n[i][j]=='f') || (n[i][j]=='F'))
				m[j]=15;
			
			printf("m[%d]=%d\n",j,m[j]);
		}
		data[i] = m[0]<<4 | m[1];
	}

  printf("0x%x\n0x%x\n0x%x\n0x%x\n0x%x\n0x%x\n",data[0],data[1],data[2],data[3],data[4],data[5]);    return data; } int main() {    unsigned char *str = getMac();    printf("0x%x\t0x%x\t0x%x\t0x%x\t0x%x\t0x%x\n",str[0],str[1],str[2],str[3],str[4],str[5]);    return 0; }

 

把Mac地址字符串轉換為占一個字節的十六進制數(地址參)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void getMac(unsigned char *data)
{
	char n[6][2];
        char mac[20]="80:32:C0:AF:55:AB";
        sscanf(mac,"%[^:]:%[^:]:%[^:]:%[^:]:%[^:]:%[^:]",n[0],n[1],n[2],n[3],n[4],n[5]);
   
	int i, j;
	int m[2];
	for(i=0;i<6;i++)
	{
		for(j=0;j<2;j++)
		{
			if(n[i][j]=='0')
				m[j]=0;
			else if(n[i][j]=='1')
				m[j]=1;	
			else if(n[i][j]=='2')
				m[j]=2;	
			else if(n[i][j]=='3')
				m[j]=3;	
			else if(n[i][j]=='4')
				m[j]=4;	
			else if(n[i][j]=='5')
				m[j]=5;	
			else if(n[i][j]=='6')
				m[j]=6;	
			else if(n[i][j]=='7')
				m[j]=7;	
			else if(n[i][j]=='8')
				m[j]=8;	
			else if(n[i][j]=='9')
				m[j]=9;	
			else if((n[i][j]=='a') || (n[i][j]=='A'))
				m[j]=10;
			else if((n[i][j]=='b') || (n[i][j]=='B'))
				m[j]=11;
			else if((n[i][j]=='c') || (n[i][j]=='C'))
				m[j]=12;
			else if((n[i][j]=='d') || (n[i][j]=='D'))
				m[j]=13;
			else if((n[i][j]=='e') || (n[i][j]=='E'))
				m[j]=14;
			else if((n[i][j]=='f') || (n[i][j]=='F'))
				m[j]=15;
		}
		*(data+i) = m[0]<<4 | m[1];
	}
     printf("0x%x\t0x%x\t0x%x\t0x%x\t0x%x\t0x%x\n",*data,*(data+1),*(data+2),*(data+3),*(data+4),*(data+5)); } int main() { unsigned char data[10]; getMac(data);    printf("0x%x\t0x%x\t0x%x\t0x%x\t0x%x\t0x%x\n",data[0],data[1],data[2],data[3],data[4],data[5]);    return 0; }

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM