社区
C语言
帖子详情
寻求将10进制数转换成8421BCD码的方法
ppyy
2002-03-15 11:08:26
请告诉我计算方法
代码我自己写
谢谢
...全文
1643
15
打赏
收藏
寻求将10进制数转换成8421BCD码的方法
请告诉我计算方法 代码我自己写 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ppyy
2002-03-16
打赏
举报
回复
void Long2Bcd(BYTE *bcd, long lSource, long lByteLen)
{
int i;
long lNumber = lSource;
for(i = lByteLen-1; i >= 0; i--)
{
*(bcd+i) = (((lNumber%100) / 10) << 4) | ((lNumber%100) % 10);
lNumber /= 100;
}
}
这个是某一朋友给的函数
但是我调用也得不到正确结果
ppyy
2002-03-16
打赏
举报
回复
to chaisave(save):
你的程序根本不能运行
chaisave
2002-03-16
打赏
举报
回复
我用的是boost库,你可能没装(装一个吧)。
目的只是把int转为字符串,itoa也可以的说。
ppyy
2002-03-16
打赏
举报
回复
c:\project\test\test.cpp(1) : fatal error C1083: Cannot open include file: 'boost/lexical_cast.hpp': No such file or directory
chaisave
2002-03-16
打赏
举报
回复
这和编译器有关么?
我用的是MSVC6.0。
ppyy
2002-03-16
打赏
举报
回复
to chaisave(save) :你是UNIX下的C++吗?
我是用的VC编译器
chaisave
2002-03-16
打赏
举报
回复
#include <boost/lexical_cast.hpp>
#include <algorithm>
#include <string>
using namespace std;
using namespace boost;
char dest[3];
void ToBCD(char src) {
static size_t index = 0;
dest[index++] = src - '0';
}
int main()
{
string src = lexical_cast<string> (125); //125 for example.
for_each(src.begin(), src.end(), ToBCD);
}
//完了,dest就是那个BCD码了
//不能run,给个理由先!
//再说了,你不是只要算法么?
ywls
2002-03-16
打赏
举报
回复
#include<iostream.h>
class convert{
int a[16],b;
public:
convert(){
for(int i=0;i<16;i++)
a[i]=0;
};
void input();
void cal();
void output();
};
void convert::input(){
cout<<"Please input a number:";
cin>>b;
cout<<"OCT:"<<b<<endl;
}
void convert::cal(){
for(int i=15;i>=0;i--){
if(b==1){a[i]=1;break;}
a[i]=b%2;
b/=2;}
}
void convert::output(){
cout<<"BIN:";
for(int i=0;i<16;i++)
cout<<a[i];
}
void main(){
convert instance;
instance.input();
instance.cal();
instance.output();
}
ywls
2002-03-16
打赏
举报
回复
class convert{
int a[16],b;
public:
convert(){
for(int i=0;i<16;i++)
a[i]=0;
};
void input();
void cal();
void output();
};
void convert::input(){
cout<<"Please input a number:";
cin>>b;
cout<<"OCT:"<<b<<endl;
}
void convert::cal(){
for(int i=15;i>=0;i--){
if(b==1){a[i]=1;break;}
a[i]=b%2;
b/=2;}
}
void convert::output(){
cout<<"BIN:";
for(int i=0;i<16;i++)
cout<<a[i];
}
void main(){
convert instance;
instance.input();
instance.cal();
instance.output();
}
vcshcn
2002-03-15
打赏
举报
回复
两者相等,只不过占位不同,转什么呀
可以移位,在与或等
chaisave
2002-03-15
打赏
举报
回复
char src[LEN];
char dest[LEN];
void ToBCD(char src) {
static size_t index = 0;
dest[index++] = src - '0';
}
ppyy
2002-03-15
打赏
举报
回复
不是转换成16进制啊
而是转换成8421BCD码
是二进制的
ppyy
2002-03-15
打赏
举报
回复
把每个字母减去'0'???怎么减?
chaisave
2002-03-15
打赏
举报
回复
设10进制数为d,BCD码数为b
先把d转为字符串s,
再把每个字母减'0'就是BCD码
for_each(s.begin(), s.end(), ToBCD)
ziqiriying
2002-03-15
打赏
举报
回复
也就是转化成16进制数
使用堆栈
int a = 10;
while( a!= 0 )
{
int temp ;
temp = a%2;
a = a/2;
push( temp );
}
对网友求助问题的几个回帖展示之四十六
回复:可以这样编程:将装有23的存储器(如 VB100)先
转换
为字整数(VW101),再用 I_
BCD
指令将字整数(VW101)
转换
为
BCD
码,则字节VB102的数值就为
BCD
码的十
进
制
数:如VB100=23整数,VB102的高位4 数=0010,VB102...
基于AT89S52 单片的频率计
术运算模块、浮点数到
BCD
码
转换
模块。 由于数据处理、脉冲计数/定时、逻辑控
制
和显示译码都是在单片机里完
成
的,所以我们可以把系统分为以下几个模块:数据处理电路、显示电路、待测信 号产生电路、待测信号整形...
最快的
进
制
转换
法之一,8421
bcd
中的8421可以方便地
进
行
进
制
转换
。 不仅可以实现二
进
制
和其他
进
制
的互转,还可以在其他
进
制
之间
进
行互转(先转
成
二
进
制
再
进
行互转)。 例如,八
进
制
转十六
进
制
是八
进
制
-二
进
制
-十六
进
制
。 推导8421码表 推...
4.4.2 译码器
译码器是计算机组
成
中的一个重要电路组件,用于将输入的编码信号
转换
为相应的输出信号。它是数字逻辑电路中的一种组合逻辑电路,根据输入的编码方式和规则产生相应的输出。译码器的主要功能是将一组输入编码(通常是...
全国计算机B级教材,全国计算机等级考试系列辅导教材(一级)——B类
第1章 学前自测与指导[学前自测--选择、填空题][学前自测--操作...[计算机系统构
成
][计算机的分类][计算机的应用领域][微型计算机系统的配置][微型计算机的性能指标][数
制
的概念][二
进
制
][二
进
制
数
转换
为十
进
制
数][...
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章