在实验室试着将数据从单片机写到sd卡中的时候,由于<span style="text-decoration: underline">只能按照字节的方式进行写入和读取</span>,所以而在使用位运算进行操作的话 麻烦又浪费时间。。。
于是在百大爷上转转。。。。
原本写的程序中有需要将一个 unsigned long型数据写入sd卡中
最初选择创建一个byte[4]的数组,然后按照顺序将unsigned long 写到数组中 然后再将数组写入到sd卡中。。。。
不给发现了使用union来进行操作方便多了,避免了大量的位操作。
首先解释一下union 这个C语言学习中一个基础又一直被忽视的强劲成员。。。
union Ltime_buff{
unsigned long time;
byte byt[4];
}Lbuff;
union的成员们共同使用一块空间,它的大小为union中最大的一个成员的大小,,,
调用 和赋值的方法。。。:
union Ltime_buff{
unsigned long time;
byte byt[4];
}Lbuff;
unsigned long num;
Lbuff.time = num;
//然后取得对应字节的二进制只需要访问Lbuff.byt[]即可。。。
//因为它们共同使用一块空间。。。
//对应取得的就是 Lbuff.byt[0] Lbuff.byt[1] Lbuff.byt[2] Lbuff.byt[3]
//顺便祭出二进制输出 方便观察
void printbin(int num){
if (num==0)return;
printbin(num/2);
printf("%d",num%2);
}
非常NB啊。。!!!