用C语言直接输出内存中数据(二进制或十六进制)

int i=97;(回答前请看看我以前提问的问题“C语言整型转换成字符后,地址的问题”,请比较比较两者在内存中表示方法的异同。
这个97在内存中肯定是以二进制表示出来的,请问如和将其直接输出在屏幕中。另外请解释下面得小程序,尤其是以%p输出i。
#include <stdio.h>
int main()
{
int i=97,j,k;
int *p;
p=&i;
printf("%d %p\n",i,j);
}
return 0;
}
改程序改的,没把j删掉,还有吧printf()下方的大括号去掉 ,我知道%p是输出指针,要用取址运算符,我只是不知道%p输出具体数值,会有什么反应.

内存中的数据显然是以二进制形式存放的。
C语言用格式符控制输出内容的进制及格式,例如%d是十进制格式,%o是八进制格式,%x是十六进制格式,但唯独没有二进制的输入输出格式符。因此也就无法将内存单元中的二进制代码原样输出出来。
%p格式符用来输出变量在内存中的地址是个十六进制数。想用%p输出变量i的地址可以,但是无法输出变量i的值。
总结:在C语言中想输出某个内存单元具体的代码值是无法实现的。可以用window自带的MS-DOS系统下的debug程序查看(有点复杂的)。
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-05-18
用windowsAPI函数
readprocessmemory
BOOL ReadProcessMemory(
HANDLE hProcess,
LPCVOID lpBaseAddress,
LPVOID lpBuffer,
DWORD nSize,
LPDWORD lpNumberOfBytesRead
);
参数
hProcess为远程进程的句柄
pvAddressRemote用于指明远程进程中的地址
pvBufferLocal是本地进程中的内存地址
dwSize是需要传送的字节数
pdwNumBytesRead和pdwNumBytesWritten用于指明实际传送的字节数.当函数返回时,可以查看这两个参数的值.
第2个回答  2009-05-18
C不支持二进制输出,只有八进制,十进制和十六进制三种形式,你可以用十六进制,方法是printf("%x",i);
首先这段代码就是错的。没有%p这种形式存在,另外它也不是输出i,而是j,还有怎么多出来一个花括号?

用C语言直接输出内存中数据(二进制或十六进制)
内存中的数据显然是以二进制形式存放的。C语言用格式符控制输出内容的进制及格式,例如%d是十进制格式,%o是八进制格式,%x是十六进制格式,但唯独没有二进制的输入输出格式符。因此也就无法将内存单元中的二进制代码原样输出出来。p格式符用来输出变量在内存中的地址是个十六进制数。想用%p输出变量i的地...

C语言中printf直接打出2进制数是%什么?16进制是什么?
C语言中,控制printf函数输出格式的是格式字符,printf没有直接打出2进制数的格式符,直接打出16进制的格式符是x格式符,即%x。printf函数中输出的格式为printf("<格式化字符串>", <参量表>),格式化字符串由格式控制、和输出表列两部分组成,其中格式控制包含格式声明和普通字符。格式声明由“%”和格...

C语言中如何将二进制直接输出到十六进制?
1,C语言没有直接输出二进制的方法。2,八进制在输出的时候以0开头,例如:0123十进制的83 3,十进制正常输出,无特别表示。4,十六进制在输出的时候以0X或者0x开头,例如0x123 十进制的291。

如何在c语言中输出二进制数???
可以用 %x格式 输出16进制数,16进制一位拉4位,按8421分布,就是2进制数。1个字节正好用2位16进制表示,转为8位2进制。

求用C语言编写代码,输入二进制数,输出十进制数,八进制数,十六进制数
void main(void){ char binary[33],i=0,x;int n=0;printf("Type a binary(<33 bit)...\\n");while((x=getchar())=='0' || x=='1'){ binary[i++]=x;if(i==33) break;} binary[i]='\\0';for(i=0;binary[i];(n*=2)+=binary[i++]-'0');printf("To Dec is %d...

C语言中怎样输出一个二进制的数?
只剩下了这个整数的二进制形式的开头第一个数字,然后与1进行按位与运算。真则为1,假则为0。printf("%d", value);\/\/每次输出整数的二进制形式的一个数字,从开头开始输出。. temp--;\/\/ 按位右移循环,直到把整数内存中所有的位移完毕。从内存中二进制形式的第一位开始。} ...

C语言怎么输出二进制数?
有八进制,十进制和十六进制,不过没二进制,如果要,只能自己写转化 include<stdio.h> void main(){ int n = 11;printf("%o\\n", n);printf("%d\\n", n);printf("%x\\n", n);}

如何用C语言输出二进制数据
itoa函数 原型: char * itoa(intvalue,char * stringprintf输出格式 二进制,intradix);参数: int值转换后的整数,char *转换后存储的字符串数组,int基数转换的十六进制数,例如2、8、10、16十六进制等.功能: 将任何类型的数字转换为字符串.中与之相反的函数是atoi.参考代码:1 include<stdlib.h...

在C语言里怎么才能输出 二进制的结果
一:运用除2取余法(我就不复制粘贴了,自己百度即可),结果存储在数组中,然后输出数组。二:如:对于int,一般是32位,可以用for循环实现,如下:int a; \/\/要输出的数bool op = false;for(int i=31; i>=0; i--){ if( a & (1<<i) ) op = true; if(op) printf("%d",...

c语言的二进制数值如何直接输出?
1、首先打开vc6.0, 新建一个项目。2、添加头文件。3、添加main主函数。4、定义一个两个数相加的函数binSubtracton。5、在main函数定义int了性number1,number2, binSub。6、使用scanf给变量赋值。7、调用binAddition、binSubtracton。8、使用printf打印结果。

相似回答