关于C++数据类型转换和格式化输出的问题

void Test()

{

//原则

//字节相同,只作二进制拷贝

//2字节->4字节,根据符号性先将2字节的数据转换成对应的4字节

//4字节->2字节,直接拷贝低位

int i = 0;

{

//INT16 -> UINT16

//UINT16 -> UINT16

}

{

//INT32 -> UINT32

INT32 n1 = 0xffffffff;

UINT32 u1 = n1;//0xffffffff

++i;

}

{

//UINT32 -> INT32

UINT32 u1 = 0xffffffff;

INT32 n1 = u1;//0xffffffff

++i;

}

{

//INT16 -> INT32

INT16 n1 = 0xffff;

INT32 n2 = n1; //0xffffffff, 2字节扩展到4字节,符号保持不变

++i;

}

{

//INT16 -> UINT32

INT16 n1 = 0xffff;

UINT32 u1 = n1; //0xffffffff, INT16->INT32->UINT32

u1 = (UINT32)(n1&0x0000ffff); //0xffff

n1 = 0x1;

u1 = n1;//0x1

++i;

}

{

//UINT16 -> UINT32

UINT16 u1 = 0xffff;

UINT32 u2 = u1;//0x0000ffff,高位补0

++i;

}

{

//UINT16 -> INT32

UINT16 u1 = 0xffff;

INT32 n1 = u1;//0xffff, UINT16 -> UINT32 -> INT32

++i;

}

{

//INT32 -> INT16

INT32 n1 = 0xf0001000;

INT16 n2 = n1; //0x1000,直接截断,取低2字节

//INT32 -> UINT16

n1 = 0xf1234567;

UINT16 u1 = n1; //0x4567,直接截断,取低2字节

++i;

}

{

//UINT32 -> INT16

UINT32 u1 = 0xf123f456;

INT16 n1 = u1; //0x4567,直接截断,取低2字节

//UINT32 -> UINT16

UINT16 u2 = u1; //0x4567,直接截断,取低2字节

++i;

}

}

void Test2()

{

//     UINT64 u1 = 0x1200003456000078;

//     UINT32 u2= UINT32(u1&(UINT64)0x00000000ffffffff);

//     UINT32 u3= UINT32(u1>>32);

//     printf("UINT64 is: %0.16llx\n", u1);

//     printf("UINT32 low: %0.8x\n", u2);

//     printf("UINT32 hi: %0.8x\n", u3);

//%d需要一个INT32(如果不足4字节,转成4字节),转成INT32,而不关心变量本身的数据类型

//%u需要一个UIN32(如果不足4字节,转成4字节),转成UINT32,而不关心变量本身的数据类型

{

//%d/%u + INT32

INT32 n1 = 0xffffffff;

TEA_LOG(LOG_DEBUG, _T("INT32 %d, %u"), n1, n1);

//INT32 -1, 4294967295

}

{

//%d/%u + UINT32

UINT32 u1 = 0xffffffff;

TEA_LOG(LOG_DEBUG, _T("UINT32 %d, %u"), u1, u1);

//UINT32 -1, 4294967295

}

{

//%d/%u + INT16

INT16 n1 = 0xffff;

TEA_LOG(LOG_DEBUG, _T("INT16 %d, %u"), n1, n1);

//INT16 -1, 4294967295

//INT16 -> INT32 -> UINT32

}

{

//%d/%u + UINT16

UINT16 u1 = 0xffffffff;

TEA_LOG(LOG_DEBUG, _T("UINT16 %d, %u"), u1, u1);

//UINT16 65535, 65535

}

}

时间: 2024-10-17 04:25:34

关于C++数据类型转换和格式化输出的问题的相关文章

使用shell+awk完成Hive查询结果格式化输出

好久不写,一方面是工作原因,有些东西没发直接发,另外的也是习惯给丢了,内因所致.今天是个好日子,走起! btw,实际上这种格式化输出应该不只限于某一种需求,差不多是通用的. 需求: --基本的:当前Hive查询结果存在数据与表头无法对其的情况,不便于监控人员直接查看,或者导出到excel中,需要提供一个脚本,将查询结果处理下,便于后续的查看或者操作. --额外的:A.每次查询出来的结果字段数.字段长度不固定:B.每个数据文件中可能包含不只一套查询结果,即存在多个schema. 想法: 对于基本需

简谈-Python的输入、输出、运算符、数据类型转换

输出: 格式化输出: 看到了 % 这样的操作符,这就是Python中格式化输出. 换行输出: 在输出的时候,如果有 \n 那么,此时 \n 后的内容会在另外一行显示 输入: 在python2.7当中,使用:raw_input(),在python3中不能使用.Python3只有input() 在python2中的input()把用户输入的东西当成式子(字符)了.所以在python2中一般用raw_input() python3中的input与python2中的raw_input()功能一样 运算符

SpringMVC框架下数据的增删改查,数据类型转换,数据格式化,数据校验,错误输入的消息回显

在eclipse中javaEE环境下: 这儿并没有连接数据库,而是将数据存放在map集合中: 将各种架包导入lib下... web.xml文件配置为 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/

[转] IOS 格式化输出符号与类型转换

1.IOS 格式化输出符号 %@    对象 %d,%i 整数 %u   无符号整形 %f    浮点(双字节) %x,%X  二进制整数 %o  八进制整数 %zi    正整数 %zu   size_t %p  指针 %e  浮点/双字节(科学计算) %g  f浮点/双字节 %s   C 字符串 %.*s  pascal字符串 %c   字符 %C unichar %lld  64位长整数 %llu  无符号64位长整数 %Lf   64位双字节 2.数据类型转换 2.1.NSString转

spring(7)--注解式控制器的数据验证、类型转换及格式化

7.1.简介 在编写可视化界面项目时,我们通常需要对数据进行类型转换.验证及格式化. 一.在Spring3之前,我们使用如下架构进行类型转换.验证及格式化: 流程: ①:类型转换:首先调用PropertyEditor的setAsText(String),内部根据需要调用setValue(Object)方法进行设置转换后的值: ②:数据验证:需要显示调用Spring的Validator接口实现进行数据验证: ③:格式化显示:需要调用PropertyEditor的getText进行格式化显示. 使用

SpringMVC——类型转换和格式化、数据校验、客户端显示错误消息

在介绍类型转换和格式化之前,我首先来介绍 <mvc:annotation-driven />. 需要导入的 schema: xmlns:mvc="http://www.springframework.org/schema/mvc" 一.作用: 1.会自动注册 RequestMappingHandlerMapping.RequestMappingHandlerAdapter 以及 ExceptionHandlerExceptionResolver 三个 Bean. 若配置该注

【iOS开发-44】通过案例谈iOS代码重构:合并、格式化输出、宏变量、利用数组字典存储数据,以及利用plist的终极知识

首先我们今天的案例就是如下5个页面通过上一张下一张来切换: (1)第一步,基本是以很傻很直接的方式来创建,这里用到的主要点有: --把对象变量设置为全局变量使得可以在其他方法中调用来设置它们的属性 --设置了一个全局变量index,默认是0,然后通过增加减少这个index值并结合switch来调用不同的数据. --利用先调用一次change方法初始化页面,使得页面定格在第一帧. --利用按钮的enabled属性来设置按钮是否可以被点击,然后结合index的值分别在第1张和第5张时分别把上一张和下

【转】C#的数据类型转换

装箱/拆箱/别名.数值类型间相互转换.ASCII码和Unicode码.数值字符串和数值之间的转换.字符串和字符数组/字节数组之间的转换.各种数值 类型和字节数组之间的转换.十六进制数输出以及日期型数据的一些转换处理. 1. 装箱.拆箱.别名 int->Int32是一个装箱的过程,反之则是拆箱的过程,其他例 如:short<->Int16,long<->Int64等.装箱和拆箱的动作由编译器自动完成,不需要人工干预.为了记住这 些类型之间的关系,我们使用了“别名”.C#是全面向

java基础----&gt;Java的格式化输出

在JavaSe5中,推出了C语言中printf()风格的格式化输出.这不仅使得控制输出的代码更加简单,同时也给与Java开发者对于输出格式与排列更大的控制能力.今天,我们开始学习Java中的格式化输出. 目录导航 System.out.format() Formatter类 格式化说明符 Formatter转换 简单的十六进制转换工具 友情链接 System.out.format() 由于内容比较简单,我们通过实例来加以说明.项目结构如下: Java Se5引入的format方法可用于Print