设为首页 加入收藏

TOP

论C/C++数据在内存中的二进制存放形式(一)
2015-07-24 06:13:47 来源: 作者: 【 】 浏览:51
Tags:C/C 数据 内存 二进制 存放 形式
// enter any type data to show Binary.c
// 输入任意类型数据转换成二进制并显示
// version: 1.0
// date: 2014.6.12
// BUG提交: yinjunwithu@outlook.com
// 缺陷: 请勿使用vc 6.0编译 因为不支持long long及unsigned long long类型

// #define _CRT_SECURE_NO_WARNINGS // Microsoft Visual Studio 2013编译器请添加本行
#include 
  
   
#include 
   
     /* CHAR_BIT所属h文件 CHAR_BIT = 8 */ #define MAX 10 // 最大选项数 int menu(void); void convert(const unsigned char * const ch, char size); int main(void) { union { long long value; // 用unsigned类型是为了与mask类型一致 unsigned char array[sizeof (long long)]; }ll_data; union { unsigned long long value; // 用unsigned类型是为了与mask类型一致 unsigned char array[sizeof (unsigned long long)]; }llu_data; union { float value; // 用unsigned类型是为了与mask类型一致 unsigned char array[sizeof (float)]; } f_data; union { double value; // 用unsigned类型是为了与mask类型一致 unsigned char array[sizeof (double)]; } d_data; int select; // 选项 // while ((select = menu()) != 0) while (select = menu()) { switch (select) { case 1: // char printf("Please input a char number (%d to %d) : ", CHAR_MIN, CHAR_MAX); while (scanf("%lld", &ll_data.value) != 1) { while (getchar() != '\n') continue; printf("wrong char number!\n"); printf("Please input a char number (%d to %d) : ", CHAR_MIN, CHAR_MAX); } printf("\n%lld is in %#p\nBinary : ", ll_data.value, &ll_data.value); convert(ll_data.array, sizeof(char)); break; case 2: // unsigned char printf("Please input a unsigned char number (0 to %d) : ", UCHAR_MAX); while (scanf("%llu", &llu_data.value) != 1) { while (getchar() != '\n') continue; printf("wrong unsigned char number!\n"); printf("Please input a unsigned char number (0 to %d) : ", UCHAR_MAX); } printf("\n%llu is in %#p\nBinary : ", llu_data.value, &llu_data.value); convert(llu_data.array, sizeof(unsigned char)); break; case 3: // short printf("Please input a short number (%d to %d) : ", SHRT_MIN, SHRT_MAX); while (scanf("%lld", &ll_data.value) != 1) { while (getchar() != '\n') continue; printf("wrong short number!\n"); printf("Please input a short number (%d to %d) : ", SHRT_MIN, SHRT_MAX); } printf("\n%lld is in %#p\nBinary : ", ll_data.value, &ll_data.value); convert(ll_data.array, sizeof(short)); break; case 4: // unsigned short printf("Please input a unsigned short number (0 to %d) : ", USHRT_MAX); while (scanf("%llu", &llu_data.value) != 1) { while (getchar() != '\n') continue; printf("wrong unsigned short number!\n"); printf("Please input a unsigned short number (0 to %d) : ", USHRT_MAX); } printf("\n%llu is in %#p\nBinary : ", llu_data.value, &llu_data.value); convert(llu_data.array, sizeof(unsigned short)); break; case 5: // int printf("Please input a int number (%d to %d) : ", INT_MIN, INT_MAX); while (scanf("%lld", &ll_data.value) != 1) { while (getchar() != '\n') continue; printf("wrong int number!\n"); printf("Please input a int number : (%d to %d) : ", INT_MIN, INT_MAX); } printf("\n%lld is in %#p\nBinary : ", ll_data.value, &ll_data.value); convert(ll_data.array, sizeof(int)); break; case 6: // unsigned int printf("Please input a unsigned int number (0 to %u) : ", UINT_MAX); while (scanf("%llu", &llu_data.value) != 1) { while (getchar() != '\n') continue; printf("wrong unsigned int number!\n"); printf("Please input a unsigned int number (0 to %u) : ", UINT_MAX); } printf("\n%llu is in %#p\nBinary : ", llu_data.value, &llu_data.value); convert(llu_data.array, sizeof(unsigned int)); break; case 7: // long long printf("Please input a long long number (%lld to %lld) : ",LLONG_MIN, LLONG_MAX); while
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Swift中利用单例管理FMDB数据库 下一篇三层学习------理论篇

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: