349|4

810

帖子

0

TA的资源

纯净的硅(高级)

 

如何将一个将 long 型 变量 NUM 的数值 按压缩BCD码的 形式存入 数组 [复制链接]

邀请:@led2015   @vincentc543   @吾妻思萌   @wangerxian   参与回复

本帖最后由 一沙一世 于 2023-9-1 09:19 编辑

请编写一个函数,实现以下功能

 

将 long 型 变量 NUM 的数值 按压缩BCD码的 形式存入 数组  , 比如 NUM=1234567890 (注意 此处是10进制,不是 16进制的 0x1234567890) 存入数组 A[9] 后 A[0]=0X12 (注意是16进制的0X12 ,不是10进制的12 其余均是) A[1]=0X34 A[2]=0X56 A[3]=0X78 A[4]=0X90

此帖出自stm32/stm8论坛

最新回复

unsigned long NUM=1234567890; viod LongToyBcd(uint8_t *p ,unsigned long numBuf) { for(uint8_t i=0;i<=4;i++) { uint8_t lBuf =numBuf%(10); numBuf =numBuf/10; uint8_t hBuf =numBuf%(10); numBuf =numBuf/10; hBuf <<=4; *(p+4-i) =hBuf | lBuf; } } LongToyBcd(&A[0],NUM);     详情 回复 发表于 2023-9-1 09:58
 

回复

1万

帖子

24

TA的资源

版主

 

你都写出来了,还要转换什么

此帖出自stm32/stm8论坛

点评

没表述清楚,请编写一个函数,实现以上功能。谢谢。  详情 回复 发表于 2023-9-1 09:20
 
 

回复

810

帖子

0

TA的资源

纯净的硅(高级)

 
dcexpert 发表于 2023-9-1 09:04 你都写出来了,还要转换什么

没表述清楚,请编写一个函数,实现以上功能。谢谢。

此帖出自stm32/stm8论坛
 
 

回复

5064

帖子

4

TA的资源

版主

 
本帖最后由 damiaa 于 2023-9-1 09:44 编辑

 

unsigned long NUM=1234567890;

uint8_t A[5]=0; //0xffffffff 的bcd码位4,294,967,295 所以最多10位 也就是5字节

unsigned long numBuf;

 

numBuf =NUM;

for(uint8_t i=0;i<5;i++)

{

   A[4-i] =numBuf%(10);

   numBuf =numBuf/10;

   uint8_t vBuf =numBuf%(10);

   vBuf <<=4;

   A[4-i] =A[4-i] | vBuf;

   numBuf =numBuf/10;

}

此帖出自stm32/stm8论坛
 
 
 

回复

5064

帖子

4

TA的资源

版主

 
unsigned long NUM=1234567890;

viod LongToyBcd(uint8_t *p ,unsigned long numBuf)
{
   for(uint8_t i=0;i<=4;i++)
   {
        uint8_t lBuf =numBuf%(10);
        numBuf =numBuf/10;
        uint8_t hBuf =numBuf%(10);
        numBuf =numBuf/10;
        hBuf <<=4;
        *(p+4-i) =hBuf | lBuf;
   }
}

LongToyBcd(&A[0],NUM);

 

此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2023 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表