int类型按字节打印输出
  今天在项目编程中,遇到一个问题,u32类型的参数,要赋值给一个u8 array[3],想用memcpy()函数进行赋值,由于类型大小不一致,一时不知道怎么做,经过查找,得以解决。说明如下;
项目是在内网中做,在查找过程中用自己笔记本做了一下实验,vs2013版本。
  类似主题是int类型按字节打印数据,sizeof(int)实验验证后为4字节,就分别打印出这4个字节中的数值。
先贴上代码
#include<iostream>
using namespace std;
int main()
{
	int i = 128;
	cout << sizeof(int) << endl;
	unsigned char* cc = (unsigned char*)&i;
	for (int j = 0; j < 4; j++)
		printf("cc: %p \t *cc: %x\n", cc + j, *(cc + j));
	system("pause");
	return 0;
}
输出:

以上是正确代码
以下对代码做改变
unsigned char* cc = (unsigned char*)&i;
改为
 char* cc = ( char*)&i;
 //代码如下:
#include<iostream>
using namespace std;
int main()
{
	int i = 128;
	cout << sizeof(int) << endl;
	 char* cc = ( char*)&i;
	for (int j = 0; j < 4; j++)
		printf("cc: %p \t *cc: %x\n", cc + j, *(cc + j));
	system("pause");
	return 0;
输出:

输出为什么是ffffff80呢?
  char类型是有符号字符型变量还是无符号字符型变量,要看编译器是怎么定义的,不能想当然。char变量为一个字节,8bit,sighed char表示的范围是-128~127,(-128在内存中二进制表示为1000 0000,127在内存中二进制表示为0111 1111),unsighed char表示的范围是0~255.
  给 i 赋值128,十六进制0x80,二进制1000 0000,相当于是给char变量赋值-128.
  printf()函数的参数%x其含义为Unsigned hexadecimal integer;即输出一个十六进制的整型,而在代码中,%x对应的是char类型,所以此时printf()函数会将char类型隐式转换为int类型。
  对于int类型的对象,其值为-128,则其对应的内存值是0xFFFFFF80
  所以,在printf()函数中,char类型隐式转换成int类型后,输出就会变成4字节的0xFFFFFF80
int类型按字节打印输出的更多相关文章
- 详解mysql int类型的长度值问题【转】
		
mysql在建表的时候int类型后的长度代表什么? 是该列允许存储值的最大宽度吗? 为什么我设置成int(1), 也一样能存10,100,1000呢. 当时我虽然知道int(1),这个长度1并不代表允 ...
 - 详解mysql int类型的长度值问题
		
我的朋友海滨问我mysql在建表的时候int类型后的长度代表什么? 是该列允许存储值的最大宽度吗? 为什么我设置成int(1), 也一样能存10,100,1000呢. 当时我虽然知道int(1),这个 ...
 - mysqlint类型的长度值mysql在建表的时候int类型后的长度代表什么
		
详解mysql int类型的长度值 mysql在建表的时候int类型后的长度代表什么 是该列允许存储值的最大宽度吗 为什么我设置成int(1), 也一样能存10,100,1000呢. 当时我虽然知道i ...
 - mysql int类型的长度值
		
整数类型的存储和范围(来自mysql手册) 类型 字节 最小值 最大值 (带符号的/无符号的) (带符号的/无符号的) TINYINT 1 -128 127 0 255 SMALLIN ...
 - INT类型知多少
		
前言: 整型是MySQL中最常用的字段类型之一,通常用于存储整数,其中int是整型中最常用的,对于int类型你是否真正了解呢?本文会带你熟悉int类型相关知识,也会介绍其他整型字段的使用. 1.整型分 ...
 - int类型究竟占几个字节
		
我最近也在看深入理解计算机系统这本书,上面提到了在32位机器和64机器中int类型都占用4个字节.后来,别人查了The C Programming language这本书,里面有一句话是这样的: Ea ...
 - int 类型 占多少字节是由什么决定的
		
int 类型占据多少字节?到底是跟编译器有关?还是系统来决定的? 1. CPU的设计者才不管你在上面跑什么程序.他们只是按着他们的想法来设计.而int的大小,至少在C/C++中,标准只说可以由实现者自 ...
 - Java 字节数组类型(byte[])与int类型互转
		
代码如下: public class CommonUtils { //高位在前,低位在后 public static byte[] int2bytes(int num){ byte[] result ...
 - 一个int类型究竟占多少个字节
		
一个int占多少个字节? 这个问题我们往往得到的答案是4. 可是int究竟占多少个字节,却跟你的机器环境有关. As you can see, the typical data type sizes ...
 
随机推荐
- Spring Boot学习笔记——Spring Boot与ActiveMQ的集成
			
Spring Boot对JMS(Java Message Service,Java消息服务)也提供了自动配置的支持,其主要支持的JMS实现有ActiveMQ.Artemis等.这里以ActiveMQ为 ...
 - Jenkins增加日志查看内容. 如何查看Jenkins插件的日志?
			
进入Jenkins日志项 添加新的日志记录 把插件的GroupID信息填入 对应的源代码 日志生成代码 执行插件,即可查看插件里的日志输出
 - 谷歌插件:右键搜使用指南.md
			
基本功能看插件,说几个自定义搜索的实现 自定义技巧:%s选择的文字或页面或链接,%g转换成GBK字符集,%t转换成BIG5字符集,%p剪贴板内容,%u当前页面域名. 注:这部分内容来自谷歌插件介绍.使 ...
 - FCM实现手机推送,推送的方式,真机调试
			
FCM实现手机 1 下载Androidstudio 3.2 版本,之后新建一个项目 2 创建完项目之后查找文件AndroidMainifest.xml 3 访问网站注册一个自己的firebase的 ...
 - 解决maven打包时,会编译特定文件导致文件不可用
			
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resou ...
 - [转帖]分享一份珍藏多年的PG数据库部署架构图
			
分享一份珍藏多年的PG数据库部署架构图 记得同事曾经测试过citus https://www.toutiao.com/i6710613553277043213/ 原创 波波说运维 2019-07-11 ...
 - 【牛客网】Longest Common Subsequence
			
[牛客网]Longest Common Subsequence 发现只有d数组最格路 于是我们把前三个数组中相同的数记成一个三维坐标,同一个数坐标不会超过8个 从前往后枚举d,每次最多只会更新不超过8 ...
 - Python 实现把两个排好序的的列表合并成一个排序列表
			
列表是升序的 # -*- coding: utf-8 -*- # 合并两个排序的数组 def merge_list(a, b): if not a: return b if not b: return ...
 - Eureka常见问题
			
一 Eureka注册慢问题默认情况下,服务注册到Eureka Server过程较慢.在开发或测试时,常常希望加速这一过程,从而提高工作效率.服务注册涉及到周期性心跳,默认30秒一次.只有当实例.服务端 ...
 - PAT-1013 Battle Over Cities (25 分) DFS求连通块
			
It is vitally important to have all the cities connected by highways in a war. If a city is occupied ...