StrLenEx为测试字符串长度,但为何要*ptr & 0x80 呢??  (见详情)

jialiang123 2004-04-16 10:03:28
StrLenEx为测试字符串长度,但为何要*ptr & 0x80 呢??


short StrLenEx( char *str )
{
char *ptr;
short slength = 0;

for( ptr = str; *ptr != '\0'; )
{
if( *ptr & 0x80 )
ptr += 2;
else
ptr ++;

slength++;
}

return slength;
}


StrLenEx为测试字符串长度,但为何要*ptr & 0x80 呢??
...全文
769 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
EternalBlue 2004-04-20
  • 打赏
  • 举报
回复
*ptr就是你所指的字符,用它跟0x80进行&运算,如果*ptr最高位为1就返回true,否则false。
tuxw 2004-04-20
  • 打赏
  • 举报
回复
*ptr & 0x80
如果表达式为真,说明 *ptr 高位为 1, 则是双字节字符
jialiang123 2004-04-20
  • 打赏
  • 举报
回复
能不能详细讲解字库呢??
superAfx 2004-04-19
  • 打赏
  • 举报
回复
80对应的二进制代码为1000 0000,最高位为一,代表汉字.汉字编码格式通称为10格式.
一个汉字占2字节,但只代表一个字符
tuxw 2004-04-19
  • 打赏
  • 举报
回复
为了识别双字节的字符,比如汉字或日文韩文等都是占两字节的, 每字节高位为1, 而一般西文字符只有一个字节,七位有效编码,高位为0

这个函数返回的是字符串的字符数,对双字节的字符只算一次

if( *ptr & 0x80 ) // 双字节字符 ?
ptr += 2; // 指针后移二位
else
ptr ++; // 指针后移一位



"abcdefgh" 字节数=8 字符数=8
"中cdefgh" 字节数=8 字符数=7
webnumen 2004-04-19
  • 打赏
  • 举报
回复
有一点不明白
*ptr & 0x80 得出一个什么值呢???
jialiang123 2004-04-19
  • 打赏
  • 举报
回复
up
rolix8311 2004-04-19
  • 打赏
  • 举报
回复
又学了一招!!!
【事件触发一致性】研究多智能体网络如何通过分布式事件驱动控制实现有限时间内的共识(Matlab代码实现)内容概要:本文档围绕多智能体网络中的事件触发一致性控制展开,重点研究如何通过分布式事件驱动控制策略实现多智能体系统在有限时间内达成共识,并提供了基于Matlab的代码实现。文档还涵盖了无人机路径规划、多目标跟踪、图像处理、故障诊断、优化算法等多个科研方向的技术实现与仿真案例,展示了事件触发机制在多智能体协同控制中的高效性与节能优势。核心技术包括分布式控制算法设计、事件触发条件设定、系统收敛性分析及仿真验证。; 适合人群:具备一定自动化、控制理论或计算机背景的研究生、科研人员及从事智能系统开发的工程师,熟悉Matlab编程与基本控制系统建模者更佳。; 使用场景及目标:①研究多智能体系统在资源受限条件下的协同控制问题;②掌握事件触发机制相较于传统周期采样控制的优势;③实现多无人机、机器人等系统的高效协同与节能通信;④为分布式控制算法的仿真与验证提供可复用的代码框架。; 阅读建议:建议结合Matlab代码逐模块理解算法实现流程,重点关注事件触发条件的设计逻辑与系统稳定性证明部分,可进一步拓展至其他分布式优化与协同控制应用场景。
【四轴飞行器】非线性三自由度四轴飞行器模拟器研究(Matlab代码实现)内容概要:本文围绕非线性三自由度四轴飞行器模拟器的研究展开,重点介绍了基于Matlab的建模与仿真方法。通过对四轴飞行器的动力学特性进行分析,构建了非线性状态空间模型,并实现了姿态与位置的动态模拟。研究涵盖了飞行器运动方程的建立、控制系统设计及数值仿真验证等环节,突出非线性系统的精确建模与仿真优势,有助于深入理解飞行器在复杂工况下的行为特征。此外,文中还提到了多种配套技术如PID控制、状态估计与路径规划等,展示了Matlab在航空航天仿真中的综合应用能力。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的高校学生、科研人员及从事无人机系统开发的工程技术人员,尤其适合研究生及以上层次的研究者。; 使用场景及目标:①用于四轴飞行器控制系统的设计与验证,支持算法快速原型开发;②作为教学工具帮助理解非线性动力学系统建模与仿真过程;③支撑科研项目中对飞行器姿态控制、轨迹跟踪等问题的深入研究; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注动力学建模与控制模块的实现细节,同时可延伸学习文档中提及的PID控制、状态估计等相关技术内容,以全面提升系统仿真与分析能力。

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧