C语言程序员必备:进制转换原理、实战与避坑指南
1. 从“数”说起为什么程序员必须懂进制转换搞了十几年开发带过不少新人发现一个挺普遍的现象很多刚入门的程序员对进制转换这事儿总有点“轻敌”。不就是十进制、二进制、八进制、十六进制嘛课本上都有公式背下来不就行了结果一到实际写代码遇到位运算、内存地址、文件读写、网络协议或者调试时看一堆0x开头的数字立马就懵了。问题往往就出在对“数”本身的理解不够透彻。计算机底层只认识0和1这是所有程序的物理基础。我们人类习惯的十进制对计算机来说是一种“高级抽象”。编程尤其是C语言这种贴近硬件的语言本质上就是在不同抽象层之间做翻译和转换。你写的int a 10;编译器得把它翻译成二进制指令内存里存的也是一串二进制位调试器显示的可能又是十六进制。如果你不理解这些表示法之间的关系就像翻译不懂两种语言的语法工作起来必然磕磕绊绊。所以今天我们不聊枯燥的公式背诵而是从一个C语言程序员的角度把进制转换这件事掰开了、揉碎了讲清楚。我会结合内存布局、位操作、调试技巧和实际编码中常见的坑让你不仅知道怎么算更明白为什么这么算以及什么时候会用到它。无论你是正在啃《C Primer Plus》的学生还是刚开始用VSCode配置环境的新手这篇文章都能帮你把这块基石打牢。2. 核心概念解析四种进制的本质与关联2.1 进制的数学本质权值与基数抛开计算机我们先回归数学。所谓“进制”全称是“进位计数制”核心是基数和位权。基数就是每位上可以使用的数字符号的个数。十进制基数是100-9二进制是20-1八进制是80-7十六进制是160-9 A-F。位权一个数字在不同位置上所代表的实际值不同这个“权重”就是位权它是基数的幂次方。对于一个数其值等于每位数字乘以该位的位权后求和。举个例子十进制数1231 * 10^2 2 * 10^1 3 * 10^0 100 20 3 123这里的10^2、10^1、10^0就是百位、十位、个位的位权。这个规则放之四海而皆准。二进制10111 * 2^3 0 * 2^2 1 * 2^1 1 * 2^0 8 0 2 1 11 (十进制)理解了这个所有进制转换的理论基础你就掌握了。转换的本质就是将一个数字从一套“基数-位权”系统映射到另一套系统。2.2 为什么是二、八、十六计算机的“语言”选择计算机采用二进制根本原因在于物理器件实现“开/关”、“高电平/低电平”这种二态系统最稳定、最可靠。但二进制有个大问题写起来太长人类阅读和记忆极其困难。比如十进制255二进制是11111111八位长。为了在人类可读性和机器本质之间取得平衡八进制和十六进制被引入作为“缩写”工具。八进制一位八进制数字正好对应三位二进制数字。因为2^3 8。十六进制一位十六进制数字正好对应四位二进制数字。因为2^4 16。这种对应关系使得转换变得异常直观。例如二进制101 110 111可以按三位一组直接写成八进制5 6 7-0567C语言中八进制以0开头。二进制1011 1010 1111可以按四位一组直接写成十六进制B A F-0xBAFC语言中十六进制以0x开头。在编程中十六进制用得远比八进制广泛因为现代计算机体系结构如32位、64位的数据宽度通常是4位的倍数8, 16, 32, 64用十六进制表示非常整齐。查看内存地址、颜色值如0xFF0000代表红色、位掩码等十六进制是标准。注意在C语言中直接写在代码里的数字编译器会根据前缀判断进制无前缀是十进制0开头是八进制0x或0X开头是十六进制。int a 10;十进制10int b 010;八进制十进制8int c 0x10;十六进制十进制16。这是一个常见的坑务必小心。2.3 C语言中的进制表示与输出C语言提供了直接书写和输出不同进制数的能力这是理解进制最直接的实践。1. 字面量表示int dec 100; // 十进制 int oct 0144; // 八进制数字0开头 int hex 0x64; // 十六进制0x开头编译器会自动将这些不同表示法的字面量转换为相同的二进制内部表示。2. 格式化输出printf函数族是观察进制转换结果的窗口。#include stdio.h int main() { int num 255; printf(十进制: %d\n, num); // 输出: 255 printf(八进制: %o\n, num); // 输出: 377 (不带前缀) printf(带前缀八进制: %#o\n, num); // 输出: 0377 printf(十六进制: %x\n, num); // 输出: ff (小写) printf(带前缀十六进制: %#x\n, num); // 输出: 0xff printf(大写十六进制: %X\n, num); // 输出: FF return 0; }%#o和%#x中的#标志会输出进制前缀0或0x这在调试时非常有用能清晰表明你看到的是什么进制。3. 格式化输入scanf同样支持不同进制的输入。int a, b, c; scanf(%d, a); // 输入十进制数 scanf(%o, b); // 输入八进制数输入时无需写前缀0 scanf(%x, c); // 输入十六进制数输入时无需写前缀0x这里有个实操心得当用%o或%x格式读入时用户输入的数字会被解释为对应进制。例如输入10对于%o会被当作八进制的10十进制8对于%x会被当作十六进制的10十进制16。这要求程序和使用者之间有明确的约定否则极易出错。3. 手工转换算法详解从原理到实现虽然编译器帮我们做了大部分工作但亲手推导转换过程是加深理解的不二法门。下面我们抛开计算器看看如何用纸笔或算法思维完成转换。3.1 其他进制转十进制加权求和法这是最直接的方法利用“位权”定义。公式为(十进制结果) Σ (每位数字 * 基数^位置索引)位置索引从右向左从0开始。例1二进制1101转十进制1 * 2^3 1 * 2^2 0 * 2^1 1 * 2^0 8 4 0 1 13例2十六进制0x2F转十进制2F中F代表15。2 * 16^1 15 * 16^0 2 * 16 15 * 1 32 15 47在C语言中你可以写个小程序验证int hex_num 0x2F; printf(%d\n, hex_num); // 输出 473.2 十进制转其他进制除基取余法整数部分这是最核心的转换算法原理是一个十进制数N要转换成基数为B的进制就是不断用N除以B记录余数直到商为0最后将余数倒序排列。例十进制29转二进制29 ÷ 2 14 ... 余 1 ↑ 14 ÷ 2 7 ... 余 0 ↑ 7 ÷ 2 3 ... 余 1 ↑ 3 ÷ 2 1 ... 余 1 ↑ 1 ÷ 2 0 ... 余 1 ↑从下往上最后一次计算的余数开始读取余数11101。所以29的二进制是11101。例十进制255转十六进制255 ÷ 16 15 ... 余 15 (F) ↑ 15 ÷ 16 0 ... 余 15 (F) ↑从下往上读FF。所以255的十六进制是0xFF。这个算法可以轻松用C语言实现void decimal_to_base(int num, int base) { int digits[32]; // 假设32位整数 int i 0; if (num 0) { printf(0\n); return; } while (num 0) { digits[i] num % base; // 取余 num num / base; // 取商 i; } // 倒序输出 for (int j i - 1; j 0; j--) { if (digits[j] 10) printf(%d, digits[j]); else printf(%c, A (digits[j] - 10)); // 处理10-15转为A-F } printf(\n); }注意事项处理十六进制时余数10-15需要转换为字母A-F。另外这个函数没有处理负数实际应用中需要考虑负数的补码表示。3.3 小数部分的转换乘基取整法小数部分的转换采用“乘基取整”法。将十进制小数乘以目标基数取结果的整数部分作为转换后的一位小数然后对结果的小数部分继续重复此过程直到小数部分为0或达到所需精度。例十进制0.625转二进制0.625 * 2 1.25 - 整数部分 1 小数部分 0.25 0.25 * 2 0.5 - 整数部分 0 小数部分 0.5 0.5 * 2 1.0 - 整数部分 1 小数部分 0.0 (停止)顺序读取整数部分0.101。所以0.625的二进制是0.101。一个重要陷阱并非所有十进制小数都能用有限位二进制精确表示。例如0.1十进制转二进制是一个无限循环小数0.0001100110011...。这就是为什么在编程中进行浮点数比较时直接使用判断相等常常会出错需要使用一个极小的误差范围如1e-9来判断。3.4 二进制与八进制、十六进制的快捷转换得益于2^38和2^416的关系它们之间的转换可以“分组对应”这是程序员必须掌握的快捷技能。1. 二进制转八/十六进制分组法转八进制从二进制小数点开始向左整数部分和向右小数部分每三位一组不足三位用0补足。每组转换成对应的八进制数。转十六进制同上但每四位一组。例二进制1110101.1011转八进制和十六进制整数部分1110101:八进制从右向左三位一组1 110 101- 补足为001 110 101-1 6 5-0165十六进制从右向左四位一组111 0101- 补足为0111 0101-7 5-0x75小数部分.1011:八进制从左向右三位一组101 1- 补足为101 100-5 4-.54十六进制从左向右四位一组1011- 补足为1011-B-.B合并八进制0165.54 十六进制0x75.B。2. 八/十六进制转二进制展开法这个更简单直接把每一位八进制数写成3位二进制每一位十六进制数写成4位二进制即可。例八进制034.6转二进制3 - 011,4 - 100,.,6 - 110。所以是011100.110可以省略整数部分高位的0写成11100.11。例十六进制0xAB.C转二进制A(10) - 1010,B(11) - 1011,.,C(12) - 1100。所以是10101011.1100。实操心得在阅读或编写涉及位掩码的代码时这种分组对应关系能让你瞬间理解。比如权限标志位常用八进制表示0755文件权限你能立刻想到二进制是111 101 101对应rwxr-xr-x。又比如颜色0xFF8800你能立刻知道红色分量是FF255绿色是88136蓝色是000。4. C语言中的进制实战位操作、内存与调试理解了理论我们来看看在C语言编程中进制知识具体用在哪儿。4.1 位操作与、或、非、异或、移位位操作直接操作数据的二进制位是高效编程和底层控制的利器。所有位操作符都在二进制层面工作。按位与 同1为1否则为0。常用于掩码Masking提取或清除特定位。unsigned char flags 0b10110110; // 0xB6 unsigned char mask 0b00001111; // 0x0F低4位掩码 unsigned char low_nibble flags mask; // 结果为 0b00000110 (0x06) // 用途获取flags的低4位按位或 |有1为1。常用于**设置Setting**特定位为1。unsigned char config 0b00100000; // 0x20 unsigned char enable_bit 0b00000001; // 0x01 config config | enable_bit; // 结果为 0b00100001 (0x21) // 用途在不影响其他位的情况下将最低位置1按位异或 ^相同为0不同为1。常用于**翻转Toggling**特定位。unsigned char toggle 0b10101010; // 0xAA unsigned char flip_mask 0b11110000; // 0xF0 toggle toggle ^ flip_mask; // 结果为 0b01011010 (0x5A) // 用途高4位全部取反低4位保持不变左移 和右移 将二进制位整体向左或向右移动空位补0逻辑移位或补符号位算术移位对于有符号数。unsigned char a 0b00001001; // 9 a a 2; // 结果为 0b00100100 (36)相当于乘以4 (2^2) a a 1; // 结果为 0b00010010 (18)相当于除以2 (2^1)重要提示对于有符号负数进行右移C语言标准未规定是逻辑移位补0还是算术移位补符号位这由编译器实现定义可移植性差应尽量避免。对于无符号数右移一定是逻辑移位。4.2 内存查看与理解十六进制的统治区当你用调试器如GDB查看变量内存或者用hexdump查看文件时满屏的十六进制数就是进制的直接应用。int main() { int num 0x12345678; // 假设在小端序Little-Endian机器上 // 变量num在内存中的4个字节32位可能显示为78 56 34 12 return 0; }为什么是反的这就引出了字节序问题。0x12345678中12是最高有效字节MSB78是最低有效字节LSB。大端序内存低地址存MSB显示为12 34 56 78。小端序内存低地址存LSB显示为78 56 34 12。x86/x64架构常用小端序。理解十六进制和字节序对于网络编程处理网络字节序即大端序、文件格式解析如BMP、PNG文件头、逆向工程等至关重要。4.3 常用位模式与掩码设计很多系统常量和标志位都是用十六进制或移位运算来定义的既清晰又高效。// 文件打开模式 (fcntl.h / sys/stat.h 类似) #define O_RDONLY 0x0000 #define O_WRONLY 0x0001 #define O_RDWR 0x0002 #define O_CREAT 0x0040 #define O_APPEND 0x0008 // 使用按位或组合标志 int fd open(file.txt, O_RDWR | O_CREAT | O_APPEND, 0644); // 检查标志位使用按位与 if (flags O_APPEND) { // 文件以追加模式打开 }设计掩码的技巧设置位n为1mask 1 n; value | mask;清除位n为0mask ~(1 n); value mask;翻转位nmask 1 n; value ^ mask;检查位n是否为1if (value (1 n)) { ... }5. 常见问题与避坑指南在实际编码和调试中进制相关的问题往往很隐蔽。这里总结几个高频坑点。5.1 整数溢出与符号位误解这是新手甚至是有经验的程序员都容易栽跟头的地方。问题1无符号与有符号的隐式转换unsigned int u 10; int s -5; if (u s) { printf(u is greater than s\n); // 这条语句会被执行吗 }答案是会。因为当有符号s和无符号u比较时s会被隐式转换为无符号数。-5的补码表示假设32位是0xFFFFFFFB转换成无符号整数是一个巨大的正数约42亿远大于10。这会导致逻辑错误。避坑尽量避免混用有符号和无符号数进行比较和运算。使用编译器警告如-Wsign-compare可以帮助发现此类问题。问题2移位操作的未定义行为int a 1; int b a 31; // 左移31位对于32位int结果是什么 int c a 32; // 左移位数等于或超过类型宽度行为未定义对于有符号数左移如果结果溢出符号位被改变C语言标准定义是未定义行为。右移有符号负数结果也是实现定义。对于无符号数移位行为是明确且安全的。避坑进行移位操作时尤其是左移要确保结果不会溢出。对于有符号数尽量先转换为无符号数再进行移位操作。避免移动位数大于或等于数据类型的位宽。5.2 格式化字符串的陷阱printf和scanf家族的函数格式化字符串必须与参数类型严格匹配。int num 255; printf(%o\n, num); // 正确输出八进制377 printf(%d\n, num); // 正确输出十进制255 printf(%x\n, num); // 正确输出十六进制ff // 危险类型不匹配 long long big_num 0x1234567890ABCDEF; printf(%x\n, big_num); // 只读取了低32位输出错误 printf(%llx\n, big_num); // 正确使用 long long 格式使用错误的格式说明符会导致读取错误的内存区域引发不可预知的结果甚至是程序崩溃。5.3 浮点数精度问题再强调如前所述很多十进制小数无法精确用二进制表示。这不仅仅是理论问题。float f 0.1f; double d 0.1; printf(%.20f\n, f); // 输出可能为 0.10000000149011611938 printf(%.20f\n, d); // 输出可能为 0.10000000000000000555 if (f 0.1) { // 比较 float 和 double 字面量通常为 false // 这里的代码很可能不会执行 } // 正确的比较方式 #include math.h if (fabs(f - 0.1f) 1e-6) { // 与单精度字面量比较使用极小误差范围 // ... }避坑永远不要直接用或!比较浮点数。根据精度需求定义一个极小的误差范围epsilon如1e-6,1e-9使用fabs(a - b) epsilon来判断是否“相等”。在需要精确计算的场合如金融考虑使用定点数库或十进制浮点数库。5.4 调试技巧善用调试器的内存和寄存器视图现代IDE如VSCode配合GDB插件、CLion、Visual Studio的调试器是观察进制的最佳工具。查看变量不仅看十进制值一定要切换到十六进制视图。这能让你看清每一位的构成。查看内存直接以十六进制字节流的形式查看某块内存地址结合你对数据结构的理解如数组、结构体可以验证数据在内存中的布局是否正确排查字节序、对齐等问题。查看寄存器在反汇编调试时寄存器的值通常以十六进制显示。理解这些值对于分析程序底层行为至关重要。例如在排查一个网络数据包解析错误时你发现一个uint32_t的字段值不对。在调试器中你看到这个变量在内存中是EF CD AB 90。如果你知道网络字节序是大端而你的主机是小端你就能立刻意识到正确的值应该是0x90ABCDEF你读取时可能忘了做字节序转换ntohl。进制转换这个看似基础的主题实则贯穿了C语言乃至整个计算机科学的底层逻辑。从理解一个整型变量在内存中的模样到设计高效的位掩码再到调试令人头疼的内存错误扎实的进制功底能让你透过高级语言语法的表象直击计算机运行的真相。它不是什么高深的魔法而是程序员与机器对话的基本语法。多动手写代码验证多用调试器观察把这些规则内化成一种本能你在编程道路上的视野会清晰得多。

相关新闻

船舶目标检测数据集详解:6595张图像YOLO训练全流程

船舶目标检测数据集详解:6595张图像YOLO训练全流程

简介:目标检测是计算机视觉领域的核心任务,YOLO系列算法凭借高效的单阶段检测能力,成为工程实践中最常用的模型之一。高质量数据集是训练可靠模型的基础,尤其在垂直领域如船舶识别中,类别多样、标注规范的公开数据资源…

2026/8/26 11:02:14 阅读更多 →
逆向工程入门:从零搭建Windows分析环境与核心概念解析

逆向工程入门:从零搭建Windows分析环境与核心概念解析

1. 逆向工程入门:从零开始的探索之旅如果你对软件、游戏或者某个应用内部如何运作感到好奇,想知道一个程序按下按钮后到底执行了什么秘密指令,或者想学习如何分析一个没有源代码的软件,那么“逆向工程”就是你正在寻找的钥匙。这听…

2026/8/26 11:02:14 阅读更多 →
Windows平台逆向工程入门:从工具链到实战分析

Windows平台逆向工程入门:从工具链到实战分析

1. 逆向工程:从黑盒到白盒的探索之旅每次双击一个.exe文件,看着它流畅运行,你有没有想过它内部究竟是如何工作的?或者当某个软件弹出一个烦人的错误提示,你想知道它背后调用了哪个系统函数?又或者&#xff…

2026/8/26 11:02:14 阅读更多 →

最新新闻

从封包拦截到协议分析:网络调试全套工具实战指南

从封包拦截到协议分析:网络调试全套工具实战指南

简介:网络数据包是网络通信的基本单位,任何网络应用的问题最终都会反映在数据包的交互过程中。对于开发与运维人员而言,掌握抓包与协议分析能力,是快速定位接口异常、性能瓶颈的关键技能。通过网卡混杂模式与过滤器的配合&#xf…

2026/8/26 12:40:01 阅读更多 →
朴素贝叶斯算法实现垃圾邮件过滤:原理、源码与实战解析

朴素贝叶斯算法实现垃圾邮件过滤:原理、源码与实战解析

简介:文本分类是自然语言处理的基础任务,其核心在于如何从高维稀疏的特征中高效提取判别信息。贝叶斯定理提供了后验概率计算的理论框架,而朴素贝叶斯算法通过条件独立性假设和拉普拉斯平滑,在数据量有限的情况下仍能保持稳定性能…

2026/8/26 12:40:01 阅读更多 →
Qt串口助手开发实战:QSerialPort深度解析与工程化设计

Qt串口助手开发实战:QSerialPort深度解析与工程化设计

1. 为什么一个“简易”串口助手,值得用 Qt Widget 重写一遍?你肯定见过——甚至用过——那些名字带“XCOM”“SSCOM”“正点原子”“格西烽火”的串口调试工具。双击运行,选个 COM3,波特率 115200,点开,发几…

2026/8/26 12:40:01 阅读更多 →
Loop Engineering实战:用循环结构提升大模型输出稳定性与Agent任务成功率

Loop Engineering实战:用循环结构提升大模型输出稳定性与Agent任务成功率

Loop Engineering 这个词,最近在大模型应用开发里被反复提及。它不是某一个开源框架,也不是某家厂商的私有协议,而是一套把大模型调用组织成“循环”的工程方法:生成 → 评估 → 修正 → 再生成,直到输出质量达到预期。…

2026/8/26 12:40:01 阅读更多 →
Docker重启策略原理与生产避坑指南

Docker重启策略原理与生产避坑指南

1. Docker容器重启策略:不是加个--restart就万事大吉你有没有遇到过这样的情况:用docker run -d --restartalways nginx跑了一个服务,结果宿主机一重启,容器确实起来了,但进去一看——配置文件丢了、日志目录权限不对、…

2026/8/26 12:40:01 阅读更多 →
共享单车调度优化建模实战:从问题解构到三层决策框架

共享单车调度优化建模实战:从问题解构到三层决策框架

1. 这不是“标准答案”,而是一份可直接上手的建模路线图 “2024年第九届数维杯大学生数学建模挑战赛B题思路1.0版本”——这个标题背后,藏着一群大二大三学生在赛前72小时反复刷新官网、对照往届题型、翻烂《数学建模算法与应用》第3版的真实状态。我带过…

2026/8/26 12:39:01 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 3:38:12 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 3:38:23 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/25 10:31:12 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →