色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          "); //-->

          博客專欄

          EEPW首頁 > 博客 > linux c之hexdump的實現(xiàn)

          linux c之hexdump的實現(xiàn)

          發(fā)布人:電子禪石 時間:2021-05-25 來源:工程師 發(fā)布文章
          linux c之hexdump的實現(xiàn)



          #include <stdio.h>
          #include <assert.h>
          #include <stdlib.h>
          #include <inttypes.h>
           
           
          //http://androidxref.com/7.1.1_r6/xref/external/avahi/avahi-compat-howl/text-test.c#33
          static void hexdump(const void* p, size_t size) {
              const uint8_t *c = p;
              assert(p);
           
              printf("Dumping %u bytes from %p:\n", size, p);
           
              while (size > 0) {
                  unsigned i;
           
                  for (i = 0; i < 16; i++) {
                      if (i < size)
                          printf("%02x ", c[i]);
                      else
                          printf("   ");
                  }
           
                  for (i = 0; i < 16; i++) {
                      if (i < size)
                          printf("%c", c[i] >= 32 && c[i] < 127 ? c[i] : '.');
                      else
                          printf(" ");
                  }
           
                  printf("\n");
           
                  c += 16;
           
                  if (size <= 16)
                      break;
           
                  size -= 16;
              }
          }
           
          //默認8的倍數(shù)對齊 4+1+10=15=>16
          typedef struct Person
          {
              int age;
              char sex;
              char city[10];
          } Person;
           
          //默認8的倍數(shù)對齊 4+4+10=18=>24
          typedef struct Student2
          {
              Person* parent; //4 //存在指針到文件中的話,指針對應的數(shù)據(jù)會丟失,因為你只存儲了他的地址,沒有保存他的數(shù)據(jù)
              int weight;//4
              char classroom[10];//10+6
          } Student2;
           
          int main(void)
          {
           
              Person person;
              person.age=26;
              person.sex='m';
              strcpy(person.city,"shenzhen");
           
               hexdump(&person,sizeof(person));
           
              Student2 stu;
              stu.parent=&person;//16
              stu.weight=140;
              memset(stu.classroom,0,sizeof(stu.classroom));//清零,否則是隨機值
              strcpy(stu.classroom,"204");
           
              hexdump(&stu,sizeof(stu));
           
              FILE* fp=fopen("student2.struct.bin","wb");
              fwrite(&stu,sizeof(stu),1,fp);
              fclose(fp);
              printf("write_Student2_struct sizeof=%d ok!\n",sizeof(stu));//24
           
              printf("Hello World!\n");
              return 0;
          }

          (10條消息) linux c之hexdump的實現(xiàn)_云守護的專欄-CSDN博客

          *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。



          關鍵詞: C

          相關推薦

          技術專區(qū)

          關閉