C语言字符串转long long例程atoll()及long long打印

本文介绍了一种从设备的IMEI(国际移动设备身份)读取并转换为唯一MAC地址的方法。通过C语言实现,从指定文件中读取IMEI,并将其转换成适用于特定硬件的MAC地址格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**ernest 20161129*/
#include "unistd.h"
#include "fcntl.h"
#include "stdio.h"
#include <stdlib.h>
#include "Program_Global.h"
#include "read_imei_2_mac.h"


#define IMEI_PATH "/home/IMEI_ID/IMEI_ID.txt"


BYTE  Const_Termination_Unique_MAC_ID[6] = { 0x00,0x00,0x00,0x00,0x00,0x00 };      //Define it in Terminal_Protocol_Data_Struct.h


char S_MAC_ID[13];
void Read_Mac_Init(void)
{


    char buf[20];
long long num_imei=0;


int fd=0;
BYTE i;


fd = open(IMEI_PATH,O_RDONLY,0777);
if (fd == -1)
{
       perror("open IMEI_PATH ERR\n");
       exit(EXIT_FAILURE);
}
if(read(fd,&buf,15)==-1)
{
        perror("read IMEI_PATH ERR\n");
        exit(EXIT_FAILURE);


}
else
{
//printf("IMEI_readorg:%s\n",buf);
if(strcmp(buf,"000000000000000")==0)
        {
            printf("IMEI_ERR,rm /home/IMEI_ID/IMEI_ID.txt  and #EIXT!#\n");
            system("rm /home/IMEI_ID/IMEI_ID.txt");
            exit(EXIT_FAILURE);
        }
buf[14]='\0';
printf("IMEI_read_s:%s\n",buf);




num_imei = atoll(buf);//strtol(buf, NULL, 10 );
printf("%012llx\n",num_imei);
//printf("%012lld\n",num_imei);


///输出有问题
// memset(S_MAC_ID,0,sizeof(S_MAC_ID));
// sprintf(S_MAC_ID,"%012llx",1234);
// printf("S_MAC_ID_test:%s\n",S_MAC_ID);


   Const_Termination_Unique_MAC_ID[5] = (BYTE)(num_imei&0x00000000000000FF);
   Const_Termination_Unique_MAC_ID[4] = (BYTE)((num_imei&0x000000000000FF00)>>8);
   Const_Termination_Unique_MAC_ID[3] = (BYTE)((num_imei&0x0000000000FF0000)>>16);
   Const_Termination_Unique_MAC_ID[2] = (BYTE)((num_imei&0x00000000FF000000)>>24);
   Const_Termination_Unique_MAC_ID[1] = (BYTE)((num_imei&0x000000FF00000000)>>32);
   Const_Termination_Unique_MAC_ID[0] = (BYTE)((num_imei&0x0000FF0000000000)>>40);


printf("\nMAC地址:  ");
for(i=0;i<6;i++)
        {
            printf("%02X:",Const_Termination_Unique_MAC_ID[i] );


        }
printf("\n");
memset(S_MAC_ID,0,sizeof(S_MAC_ID));
        sprintf(S_MAC_ID,"%02X%02X%02X%02X%02X%02X",Const_Termination_Unique_MAC_ID[0],
                                                                                        Const_Termination_Unique_MAC_ID[1],
                                                                                        Const_Termination_Unique_MAC_ID[2],
                                                                                        Const_Termination_Unique_MAC_ID[3],
                                                                                        Const_Termination_Unique_MAC_ID[4],
                                                                                        Const_Termination_Unique_MAC_ID[5]
                                                                                        );


          printf("S_MAC_ID:%s\n",S_MAC_ID);


}






}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值