1

我已经尝试了几个小时来转换它。我尝试循环遍历将字符转换为长整数的数组,但这不起作用。我在网上看到过简单的例子,但它们没有涵盖更长的 char 数组的循环过程。我可以使用什么方法将这个 char (SAMPLE) 数组转换为一个 long 类型的变量?

ar.h

struct  ar_hdr       /* file member header */
     {
         char    ar_name[16];    /* '/' terminated file member name */
         char    ar_date[12];    /* file member date */
         char    ar_uid[6]       /* file member user identification */
         char    ar_gid[6]       /* file member group identification */
         char    ar_mode[8]      /* file member mode (octal) */
         char    ar_size[10];    /* file member size */
         char    ar_fmag[2];     /* header trailer string */
     };

我的代码

struct ar_hdr sample;
lseek(fileD, 24, SEEK_SET); //fileD is the file desriptor for the opened archive

//I start at 24 because of the 8 byte magic string for an archive starts the file "!<arch>\n"


int numRead = read(fileD, sample.ar_date, 12);
printf(sample.ar_date);

long epoch = (long *) *sample.ar_date;   //terrible coding here
printf("The current time is: %s\n", asctime(gmtime(&epoch)));
4

1 回答 1

2

man ar说:

文件成员标题中的所有信息都是可打印的 ASCII 格式。标头中包含的数字信息存储为十进制数(除 ar_mode 以八进制表示)。因此,如果档案包含可打印文件,则档案本身是可打印的。

所以atol(ar_date)应该做的伎俩。

于 2012-10-17T20:06:38.897 回答