学习C语言——体会计算机中的0和1

/*

把hello隐写入一个整型数组,这个小程序可以考察是否清楚数据在内存中存储的具体细节。

具体的说,int类型在小端机器上的存储方式是高位在高地址,低位在低地址,从视觉习惯上和我们的日常书写习惯相反;

char类型占用一个字节的存储空间,它不区分大端和小端,是顺序存储的,和阅读顺序相同,当

我们根据这个规律进行转换后,就可以把一段字符串写入一个数组,当我们以字符串输出的时候,就可以看到隐藏在整型数组中的字符。

这个功能扩展后,可以让一个整型数组存储任意的字符串。

同时,我们也会想到,如果我把字符串以无符号整型的方式,每4个字节读取出来,组成一个数组,是否就完成了这种隐写呢?

在现在的MySQL数据库字符编码中,utf8mb4是默认字符集,我想选用这个字符集,除了能够包含完整的世界范围内的字符外,还带来了一种处理起来的方便性,那就是可以把它当作一个整型数来看待。处理起来更加方便。

*/

cpp 复制代码
#include <stdio.h>

int main(int argc, char** argv){
    int a[3][3][4]={
        0x6c6c6568,0x6f,'\0','l','o','\0'
        ,0,2,3,3,3,0,
        4,4,4,4,5,65,5,5,6,6,6,0,
        7,7,7,7,8,8,8,'h','e','l','l','o'
    };
    char* str=(char*)a;
    int* p=(int*)a;
    for(int i=0;i<3*3*4;i++)
    {
        printf("%x ", *(p+i));
    }

    for(int i=0;i<3;i++){
        printf("%s\n", str);
    }
    return 0;
}

给大家留一个问题,如果数组中的第三个整型数不是'\0',输出会有问题吗,为什么?

如果你知道答案,欢迎给我留言,点赞,一起探讨有趣的事情。

相关推荐
KaMeidebaby3 分钟前
卡梅德生物技术快报|酵母双杂交 cDNA 文库构建与蛋白互作筛选流程
服务器·前端·数据库·人工智能·算法
暴躁小师兄数据学院9 分钟前
【AI大数据工程师特训笔记】第02讲:PostgreSQL数据库生态全景
大数据·数据库·人工智能·postgresql
沐风___9 分钟前
App 上架之后:如何看数据、获取用户与持续迭代产品
服务器·前端·数据库
sheeta199812 分钟前
LeetCode 每日一题笔记 日期:2026.05.27 题目:3121. 统计特殊字母的数量 II
笔记·算法·leetcode
神仙别闹18 分钟前
基于C语言 实现 Windows PE 文件解析
c语言·windows·microsoft
夜微凉420 分钟前
三、MySQL
android·数据库·mysql
ST——Jess22 分钟前
年度行业趋势研究报告:泛心理数字化赛道“流日推演”的算法困境与高保真交互范式重构
人工智能·算法·架构
Tisfy24 分钟前
LeetCode 3300.替换为数位和以后的最小元素:一次遍历
数学·算法·leetcode·模拟
小新同学^O^32 分钟前
Redis的简单总结
数据库·redis·学习
暴躁小师兄数据学院32 分钟前
【AI大数据工程师特训笔记】第11讲:正则表达式与正则函数
数据库·mysql