C++内整型数据转为字符型数据的过程

这里以16进制整数1378转为字符型数据的过程进行分析。

首先需知晓:

        8个二进制位称为一个字节,整型数据是4个字节,字符型数据是1个字节,1个16进制是对应4个二进制的,a对应的ASCII码为97。

#include <iostream>
using namespace std;
int main() 
{
    int n1 = 1378;       // 1378的十六进制形式是 0x562)
    char n2 = n1;        //将n1的整型数据赋值给字符型数据n2,完成整型到字符型结构的转变
    printf("n2=%c, n2=%d",n2, n2);  // %c表示将“ ”双引号和 , 逗号后面的n2以字符串形式代替,
                                    // %d表示将“ ”双引号和 , 逗号后面的n2以整数形式代替
    return 0;
}
// 打印结果为 n2=d, n2=98
// n2=d是因为第一个是%c,他是以字符形式进行转换的,即将整数通过ASCII码找到对应的字母d
// n2=98是因为第二个是%d,是以整数形式进行代替

现在来分析其结果为什么这个1378(10进制)变为16进制的整型数据变为字符型数据时会变为98:

        原因在于:整型是4个字节,而字符型是1个字节,故整型数据赋值给字符型数据进行数据类型转换时,字符型数据是无法接收4个字节的,所以只能接收到整型数据的最右边的1个字节。

那么这里十六进制形式是0x562,而赋值给字符串时只接收到0x62

        原因在于:首先0x只是进制类型的标识,不是字节哈,然后针对562这个1378的十六进制而言,因为1个字节对应8个二进制位,1个十六进制对应4个二进制,所以16进制的整型数据赋值给字符型数据时,他是2个十六进制(不知道如果用十六进制最右边的2个数来表示更具象些)对应字符型的1个字节!!!所以这里只需要把5剔除掉,仅留下62这两个十六进制的内容。那么字符型数据n2接收到的内容就是0x62,通过16进制的换算(6*16+2*16^0=98),即可。

        

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值