// 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