社区
C语言
帖子详情
现场高分求助:将反向BCD码转换为字符串的C程序
qdwfji
2006-10-29 09:56:18
急啊, 十万火急啊!
偶现在需要比对BCD码的大小,但反向BCD码显然不能直接比较,如
起始BCD:214365, 终止BCD:214387。比较某BCD码是否处于二者之间,如214375,或214395。
现在急需先将BCD码转换为字符串,123456,123478,123457,123459后,再进行比较
...全文
513
9
打赏
收藏
现场高分求助:将反向BCD码转换为字符串的C程序
急啊, 十万火急啊! 偶现在需要比对BCD码的大小,但反向BCD码显然不能直接比较,如 起始BCD:214365, 终止BCD:214387。比较某BCD码是否处于二者之间,如214375,或214395。 现在急需先将BCD码转换为字符串,123456,123478,123457,123459后,再进行比较
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gxh9314
2006-10-29
打赏
举报
回复
不明白楼主的意思
飞哥
2006-10-29
打赏
举报
回复
一头雾水~
jixingzhong
2006-10-29
打赏
举报
回复
我不明白为什么 要这样转换数据后比较 ~~
楼主能解释一下 什么是 反向BCD码 么?
BCD码是可以理解,
这个反向BCD码 是什么概念?
它们比较是根据什么规则呢?
Jokar
2006-10-29
打赏
举报
回复
你的BCD码存储为什么数据型态的
yingge
2006-10-29
打赏
举报
回复
晕,自己+一句不就可以了么?
char *inv_BCD_to_str(char *dst,void *BCDcode,size_t size){
char *ret=dst;
int i;
for(i=0;i<size;i++){
*dst++=((int)(*(char *)BCDcode)&0xf)+'0';
if(((int)(*(char *)BCDcode)&0xf0)==0xf0)
continue;
*dst++=((int)(*(char *)BCDcode)>>4)+'0';
(char *)BCDcode++;
}
*dst='\0';
return ret;
}
qdwfji
2006-10-29
打赏
举报
回复
多谢楼上兄弟
不过可能是我没有讲所有反向BCD码的描述说清楚——
反向BCD码如果是奇数位,则补F填充最后高半字节,如
字符串12345,其反向BCD码就要表示成2143F5
0010 0001 0100 0011 1111 0101
-- -- -- -- -- --
2 1 4 3 F 5
yingge
2006-10-29
打赏
举报
回复
#include <stdio.h>
char *inv_BCD_to_str(char *dst,void *BCDcode,size_t size){
char *ret=dst;
int i;
for(i=0;i<size;i++){
*dst++=((int)(*(char *)BCDcode)&0xf)+'0';
*dst++=((int)(*(char *)BCDcode)>>4)+'0';
(char *)BCDcode++;
}
*dst='\0';
return ret;
}
int main(){
char s[]={0x21,0x43,0x65,};
char *t=(char *)malloc(sizeof(s)*2+1);
printf("%s\n",inv_BCD_to_str(t,s,sizeof(s)));
free(t);
return 0;
}
qdwfji
2006-10-29
打赏
举报
回复
不好意思,是我没有解释清楚。答复如下:
1. 反向BCD码就是每byte的高4位、低4位反序,比如字符串格式123456存储成反向BCD码就是
0010 0001 0100 0011 0110 0101
-- -- -- -- -- --
2 1 4 3 6 5
2. 之所以要先将反向BCD码转换为字符串,是反向BCD码自身无法比较。比如
反向BCD码214387(就是字符串123478)要比反向BCD码214375(就是字符串123457)和214395(就是字符串123459)都大,但直接比对BCD码显然无法完成
有说的不清楚的大家见谅,我继续解释
lsd1025
2006-10-29
打赏
举报
回复
不明白
EasyBCD 2.4启动管理工具完整版实战应用
htmltable {th, td {th {pre {简介:EasyBCD是由NeoSmart Technologies开发的一款开源多系统引导修复与管理工具,其核心可执行文件EasyBCD 2.4.exe为用户提供了图形化界面来配置和管理启动加载器。该工具支持Windows、Linux等多种操作系统,能够创建和编辑启动菜单、修复MBR/BCD、备份恢复启动配置,并可制作可启动U盘或光盘。配合“更新日志.txt”了解版本迭代信息,用户可全面掌握功能增强与问题修复情况。
Windows平台二进制文件深度分析工具wxMEdit3.1实战应用
htmltable {th, td {th {pre {简介:wxMEdit3.1是一款专为Windows系统打造的二进制文件读取与编辑工具,支持对各类二进制数据进行逐字节查看、搜索和修改,广泛应用于网络安全、软件调试、逆向工程和数据恢复等领域。该工具可解析可执行文件、日志、数据块等非文本格式内容,帮助用户深入理解
程序
底层结构,辅助恶意代码分析、系统日志追踪及编译后机器码研究。配合“01Read”教程文件,用户能够快速掌握其核心功能,提升在二进制数据处理方面的实践能力。
Arduino I2C模块DS1307时钟实战指南
Arduino是一个灵活的开源电子原型平台,它由简单的I/O硬件板(通常称为Arduino板)和易于使用的开发环境组成。该平台的目的是提供一种简单、廉价的方式来创建能够感知和控制物理世界的交互式电子装置。Arduino板可以读取输入——光、手指触摸或Twitter消息——并将其
转换
成输出——激活电机、打开LED、发布信息等等。Arduino板由以下核心组件构成:微控制器(MCU):中心处理单元,可以是ATmega系列等。引脚(Pins):连接到各种传感器、执行器或其他电子组件。
EasyBCD 2.3系统引导管理与无光驱安装实战工具
EasyBCD 2.3采用模块化架构,基于Windows原生BCD存储(\Boot\BCD)进行抽象封装,通过调用底层Windows Boot Management API 实现对引导配置的安全读写。其核心引擎在用户模式下运行,但通过提升权限访问受保护的系统区域(如MBR扇区、EFI系统分区),避免直接操作磁盘导致的系统崩溃风险。// 模拟EasyBCD调用Windows引导管理API的伪代码。
真正高效的
程序
流程图自动生成工具推荐与使用指南
支持行内波浪线标记错误位置;悬停显示详细错误描述;可扩展为风格检查(Pylint、ESLint规则集成);与主题配色一致,提升一致性体验。
程序
流程图的本质是对代码执行路径的抽象映射,而这种映射的基础在于对各类代码结构进行精确分类并赋予统一的图形语义。一个成熟的流程图生成器必须建立一套完整的节点类型体系,确保不同编程语言中的语法构造都能被准确识别并转化为标准化的视觉元素。该体系不仅要支持基础控制结构(如顺序、分支、循环),还需涵盖复合语句、异常处理、函数调用等高级语义单元。
C语言
70,040
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章