欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2780|回復: 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 單片機教程網

快速回復 返回頂部 返回列表