从unit8_t缓冲区到结构的指针类型转换

时间:2018-09-03 09:08:33

标签: c type-conversion

我正尝试使用uint8_t字段将structure缓冲区类型转换为bit,如下所示。

#include<stdio.h>
#include<inttypes.h>

struct msg{
    uint64_t field:56;
};

void main()
{
   uint8_t buf[8]={0x7,0x6,0x5,0x4,0x3,0x2,0x1};
   struct msg *m = buf;
   printf("buf=%"PRIx64"\n",m->field);
}

但是我得到的输出如下。

  

实际输出:

     

buf=1020304050607

     

预期输出:

buf=7060504030201

类型转换时我做错什么了吗?

1 个答案:

答案 0 :(得分:1)

您可以使用联合体来提高可移植性,而不必进行指针调整

var xls    = new ActiveXObject ( "Excel.Application" )
var handle = xls.Workbooks.Add

var arrayOverskrift = new Array('INITIALER','TEAMNAVN','UDDANNELSE_NAVN','UDD_START','UDD_SLUT')
var i=0
//Indsætter overskrift
for (j=0;j<arrayOverskrift.length;j++)
{
        value = arrayOverskrift[j]
        xls.Cells( i+1, j+1).Value = value
}
    i++
var y = arrayOverskrift.length

while(rs.eof != true)
{
    for (j=0;j<arrayOverskrift.length;j++)
    {
        value = replaceNullFromDatabase(""+rs(arrayOverskrift[j]))

        xls.Cells( i+1, j+1).Value = value
    }
    i++
    rs.moveNext
}
    rs.close()
    conn.close()