2、8、10、16进制输出

#include <stdio.h>
#include <stdlib.h>
typedef short type;  //进行二进制转换的数据类型

/********************************************************************************
*  Description:本函数实现 将type类型的数据以二进制形式输出
*   Input Args:待输出的原始数据
* Return Value:void
********************************************************************************/
void binary_output(type a)
{
    int i;
    type b;
    char *ptr = (char *)malloc(8*sizeof(a));
    ptr += 8*sizeof(a); //将指针指向分配的空间的末尾,便于下面的赋值
    for(i=8*sizeof(a)-1;i>0;i--) //循环次数减一,否则ptr最后就多减了,从而指向的不是分配的首地址了
    {
        b = a&1;
        *ptr-- = b+‘0‘; //试过不用间接数据b,但是会出错
        a >>= 1;
    }

b = a&1;
    *ptr = b+‘0‘;

printf("二进制:%s\n",ptr);

free(ptr);
}

int main (int argc, char **argv)
{
    type a = 12;
    printf("十进制:%d\n",a);
    printf("八进制:%o\n",a);
    printf("十六进制:%0x\n",a);
    binary_output(a);
    printf("地址形式:%#x\n",a);
    printf("地址形式:%p\n",a);
    return 0;
}

输出

十进制:12
八进制:14
十六进制:c
二进制:0000000000001100
地址形式:0xc
地址形式:0xc

时间: 2025-01-14 05:48:43

2、8、10、16进制输出的相关文章

C# 中2,10,16进制及其ASCII码之间转化

C# 中2,10,16进制及其ASCII码之间转化             --------//C#中各种字符类型的转化,使用于串口通信------------ //字符长度的理解            string s = "我是一个2兵";            int len = s.Length;//6个字符              byte[] sarr = System.Text.Encoding.Default.GetBytes(s);            len =

0x%02x 字符型的16进制输出

问题:将一个字符类型按16进制输出,输出格式为0xab, 0x后面要求是2位,不够2位则补0,比如“0x0b”. 常见的错误做法是: #include <stdio.h> int main() { char a = 0x41; // a = 'A' printf( "the hex value of a is 0x%02x\n", a ); return 0; } 如果a = 0xf1,上面的输出将是 0xfffffff1 而不是 0xf1. 究其原因,%x 是 unsig

2,8,10,16进制之间的转换

我们常用的进制是“十进制”,就是我们日常所说的逢十进一位,类比1+9=10(很简单) 类比十进制二进制i则是逢而进以也就是1+1=10 , 1+1+1=11,1+1+1+1=100, 1+1+1+1+1=101,1+1+1+1+1+1=110. 我们正常是用的数据为十进制,则十进制的数据转换二进制的数据时用短除 如例题所示,余数从下到上写则为二进制代码,读法就是从前往后念并不是十进制的读法,规律由例题可见当商为偶数对应右边的为0,而商为奇数时则对应的为1 十进制转八进制.十进制转16进制  法则

float用16进制输出

1 int main() 2 { 3 union{ 4 float a; 5 unsigned b; 6 } ha; 7 ha.a = 2147483647; 8 printf("%x\n",ha.b); 9 return 0; 10 } 使用union就完事了 原文地址:https://www.cnblogs.com/zhengbao/p/11824859.html

byte 转 16进制输出

public class Test { public static void main(String[] args) { char hex[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; byte b = -1; System.out.println("b = 0x" + hex[(b >> 4) & 0x0f] + hex[b &

byte数组转16进制 输出到文件

try { File file = new File(Environment.getExternalStorageDirectory(),"shuju2"); if(!file.exists()){ file.createNewFile(); } FileWriter fw = new FileWriter(file); BufferedWriter out = new BufferedWriter(fw); out.write(toHexString1(bytes)); out.cl

支持windows linux下将指定内存段转为16进制与ascii码的日志输出类

来源:http://blog.csdn.net/lezhiyong 1. 简介 将指定内存段转为16进制与asci码的输出到日志文件的类. 2. 功能介绍 1) 支持window与linus双系统. 2) 可指定输出目录. 3) 日志能输出的时间精确到毫秒,日志能输出线程号. 4) 提供字符串输出. 5) 提供指定内存转换为16进制输出. 6) 提供指定内存转换为16进制和ascii码同时输出. 7) 可调整16进制输出间距. 3. 原理和算法 1) 模块是基于C++语言编写: 2) 通过条件定

python常用的十进制、16进制、字符串、字节串之间的转换(长期更新帖)

进行协议解析时,总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等 废话不多上,直接上例子 整数之间的进制转换: 10进制转16进制: hex(16)  ==>  0x10 16进制转10进制: int('0x10', 16)  ==>  16 类似的还有oct(), bin() ------------------- 字符串转整数: 10进制字符串: int('10')  ==>  10 16进制字符串: int('10', 16)  ==>  16 16进

python经常使用的十进制、16进制、字符串、字节串之间的转换(长期更新帖)

进行协议解析时.总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等 废话不多上.直接上样例 整数之间的进制转换: 10进制转16进制: hex(16)  ==>  0x10 16进制转10进制: int('0x10', 16)  ==>  16 类似的还有oct(), bin() ------------------- 字符串转整数: 10进制字符串: int('10')  ==>  10 16进制字符串: int('10', 16)  ==>  16 16进