久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2556|回復: 16
打印 上一主題 下一主題
收起左側

如何十進制轉十六進制?

  [復制鏈接]
跳轉到指定樓層
樓主
我制作了幾個時鐘,DS1203,PGS,都分別制作成功了,現在想結合一下,想制作DS1203走時,GPS校準的時鐘,發現得到時間是,DS1203是十六進制的,GPS是十進制,折騰了幾天都沒有做好,思想枯竭,哪個高手給個思路,說明一下,本人C語言只能看個大概,會點匯編,拜托!拜托!高手,先在這里謝謝了!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:883242 發表于 2024-4-7 18:07 | 只看該作者
假設字符串gps[]從第5個字節開始是hhmmss

hour=(gps[5]-'0')*10+gps[6]-'0';
minute=(gps[7]-'0')*10+gps[8]-'0';
second=(gps[9]-'0')*10+gps[10]-'0';
回復

使用道具 舉報

板凳
ID:1080935 發表于 2024-4-7 18:15 | 只看該作者
是DS1302吧,查下十進制轉BCD子程序可以直接用。其實就是把GPS的十進制對10取余數作為個位(低四位),然后原數除10再對10取余作為十位(高四位,原數據不大于99的話不取余也可,就是原數除10,商做高四位,余數做低四位),時鐘8位夠用了。
回復

使用道具 舉報

地板
ID:69038 發表于 2024-4-7 18:52 | 只看該作者
24轉0x24(數字轉換):
(24/10)*16+24%10  ; //===>0x14
24轉16進制(數值變換):
24/16+24%16   ;        //===>0x18
回復

使用道具 舉報

5#
ID:213173 發表于 2024-4-7 19:02 | 只看該作者
//BCD碼轉十進制函數
unsigned char BCD_D(unsigned char bcd)
{
        return ((bcd>>4)*10)+(bcd & 0x0f);
}
//十進制轉BCD碼函數
unsigned char D_BCD(unsigned char Dec)
{
        return (Dec/10*16+Dec%10);
}
回復

使用道具 舉報

6#
ID:883242 發表于 2024-4-8 07:57 | 只看該作者
zhuls 發表于 2024-4-7 18:52
24轉0x24(數字轉換):
(24/10)*16+24%10  ; //===>0x14
24轉16進制(數值變換):

你查下NMEA0183格式,人家是ASCII字符串!
回復

使用道具 舉報

7#
ID:1117741 發表于 2024-4-23 14:52 | 只看該作者
在C語言中,可以使用標準庫函數sprintf來實現十進制轉十六進制。如:

#include <stdio.h>
#include <stdlib.h>

void decimal_to_hexadecimal(int decimal_number) {
    char hex_string[100];
    sprintf(hex_string, "%x", decimal_number);
    printf("%s\n", hex_string);
}

int main() {
    int number = 255;
    decimal_to_hexadecimal(number);
    return 0;
}
回復

使用道具 舉報

8#
ID:1034262 發表于 2024-4-23 15:51 | 只看該作者
((((a*10)+b)*10+c)*10+d)*10....
回復

使用道具 舉報

9#
ID:140275 發表于 2024-4-23 16:09 | 只看該作者
BCD整數轉換為二進制整數(3位)       
;入口:R0(高位地址),N位數;出口:R2,R3,R4       
;占用資源:ACC,B;堆棧需求:2字節       
IPP3:        MOV        R7,N       
        CLR        A       
        MOV        R2,A       
        MOV        R3,A       
        MOV        R4,A       
IPP31:        MOV        A,R4       
        MOV        B,#0AH       
        MUL        AB       
        MOV        R4,A       
        MOV        A,B       
        XCH        A,R3       
        MOV        B,#0AH       
        MUL        AB       
        ADD        A,R3       
        MOV        R3,A       
        CLR        A       
        ADDC        A,B       
        XCH        A,R2       
        MOV        B,#0AH       
        MUL        AB       
        ADD        A,R2       
        MOV        R2,A       
        MOV        A,R4       
        ADD        A,@R0       
        INC        R0       
        MOV        R4,A       
        CLR        A       
        ADDC        A,R3       
        MOV        R3,A       
        CLR        A       
        ADDC        A,R2       
        MOV        R2,A       
        DJNZ        R7,IPP31       
        RET       
回復

使用道具 舉報

10#
ID:883242 發表于 2024-4-23 17:19 | 只看該作者
1534545848 發表于 2024-4-23 16:09
BCD整數轉換為二進制整數(3位)       
;入口:R0(高位地址),N位數;出口:R2,R3,R4       
;占用資源:ACC,B;堆棧需求:2字 ...

不對,樓主要的是ascii碼轉十六進制。
回復

使用道具 舉報

11#
ID:76044 發表于 2024-7-25 09:55 | 只看該作者
經過多天思考,有了個想法,可以根據十位上的數乘一個基數6,如10 十位是1,6乘以1得6,20 十位是2,6乘以2得12,30 十位是3,6乘以3得18,如此類推,再相加本數
結果就是如,十進制#30,轉換后就是十六進制#48H
回復

使用道具 舉報

12#
ID:1116913 發表于 2024-7-25 10:31 | 只看該作者
十進制轉化為十六進制計算方式,簡單說就是整數除以16取余,直到商為0為止,然后從最后一個余數讀到第一個
回復

使用道具 舉報

13#
ID:624769 發表于 2024-7-26 21:17 | 只看該作者
lxm41577 發表于 2024-7-25 09:55
經過多天思考,有了個想法,可以根據十位上的數乘一個基數6,如10 十位是1,6乘以1得6,20 十位是2,6乘以2 ...

暈死, 暈倒徹底死的那種, 十進制  48, 轉成16進制  才是 30H  !!!!
而不是 十進制 30 轉成 16進制 變 48H !!!!!
你這多天思考,都思考了啥?拿個筆算算,都不會算成這樣。
回復

使用道具 舉報

14#
ID:76044 發表于 2024-7-27 14:56 | 只看該作者
188610329 發表于 2024-7-26 21:17
暈死, 暈倒徹底死的那種, 十進制  48, 轉成16進制  才是 30H  !!!!
而不是 十進制 30 轉成 16進制 ...

兄弟,也許你看不上我的方法,我搞單片機只是愛好,為了這個SD1302走時,GPS校對的時鐘,我想了好久,我秉持的是能用即為合理的原則,這個方法已經在我的時鐘上,正常運行了幾天了,以后有問題交流交流
回復

使用道具 舉報

15#
ID:466250 發表于 2024-7-27 15:51 | 只看該作者
10位一個數就增加6,相當于擴大了1.6倍。
10進制的數先整合到16進制的數,10位的就x10,個位保持,最后相加。就已經是16進制的數了。
比如8位的值,4c可拆分為4與c。以此類推
回復

使用道具 舉報

16#
ID:332444 發表于 2024-7-27 18:18 | 只看該作者

回復

使用道具 舉報

17#
ID:1129742 發表于 2024-7-28 20:04 | 只看該作者
十進制轉換為十六進制是一個常見的編程和計算機科學任務。以下是十進制數轉換為十六進制數的基本步驟:

確定需要轉換的十進制數:選擇一個十進制數,例如我們轉換十進制數 255。

連續除以16:將十進制數除以16,記錄余數。然后將商繼續除以16,再記錄余數,重復這個過程直到商為0。

255 ÷ 16 = 15 余 15(十六進制表示為 F)
15 ÷ 16 = 0 余 15(十六進制表示為 F)
記錄余數:將每次除法的余數從后向前(即從最后一步到第一步)記錄下來,這些余數就是十六進制數的每一位。

在我們的例子中,余數是 F 和 F,所以從后向前讀,十六進制數是 FF。
特殊情況:如果余數是10到15之間的數字,它們在十六進制中分別表示為 A 到 F。

結果:將這些十六進制的數字組合起來,就得到了十進制數的十六進制表示。

例如,十進制數 255 的十六進制表示是 FF。

在編程中,許多語言提供了內置函數來執行這種轉換。例如,在C語言中,你可以使用 printf 函數和 %X 格式化輸出選項來打印一個整數的十六進制表示:

c
#include <stdio.h>

int main() {
    int decimal = 255;
    printf("The hexadecimal representation of %d is %X\n", decimal, decimal);
    return 0;
}
這段代碼會輸出:

The hexadecimal representation of 255 is FF
在某些編程環境中,可能需要使用不同的格式化選項,例如 %x(小寫)或可能需要其他函數來執行轉換
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久精品国产亚洲一区二区三区 | 高清欧美性猛交xxxx黑人猛交 | 欧美精品一区二区三区四区五区 | 黄色电影在线免费观看 | 性一交一乱一伦视频免费观看 | 三级免费毛片 | 欧美婷婷| 国产精品久久久亚洲 | 老头搡老女人毛片视频在线看 | 亚洲色在线视频 | av入口| 亚洲一区二区三区乱码aⅴ 四虎在线视频 | 成人三级电影 | 91久久精品 | 日韩中文字幕av | 国产视频在线观看一区二区三区 | 色婷婷综合久久久中字幕精品久久 | 蜜桃精品视频在线 | 天堂亚洲网 | 免费一级欧美在线观看视频 | 91麻豆精品一区二区三区 | 日韩av一二三区 | 91一区二区三区在线观看 | av色站 | 午夜影院在线观看视频 | 亚洲 欧美 日韩 精品 | 久久久久久久久蜜桃 | 华丽的挑战在线观看 | 成人一级视频在线观看 | 成人免费视频网站在线观看 | 国产精品久久在线观看 | 毛片免费在线观看 | 九九久久精品 | 国产精品久久久久久久久久妇女 | 亚洲国产第一页 | 久久成人av | 欧美成人精品在线 | 一级片在线播放 | 亚洲精品在线观看网站 | 欧美一区二区在线视频 | 中文字幕在线免费观看 |