#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
2、8、10、16进制输出
时间: 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进