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

標題: 如何十進制轉十六進制? [打印本頁]

作者: lxm41577    時間: 2024-4-7 16:07
標題: 如何十進制轉十六進制?
我制作了幾個時鐘,DS1203,PGS,都分別制作成功了,現在想結合一下,想制作DS1203走時,GPS校準的時鐘,發現得到時間是,DS1203是十六進制的,GPS是十進制,折騰了幾天都沒有做好,思想枯竭,哪個高手給個思路,說明一下,本人C語言只能看個大概,會點匯編,拜托!拜托!高手,先在這里謝謝了!

作者: Hephaestus    時間: 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';
作者: LaoYuTou    時間: 2024-4-7 18:15
是DS1302吧,查下十進制轉BCD子程序可以直接用。其實就是把GPS的十進制對10取余數作為個位(低四位),然后原數除10再對10取余作為十位(高四位,原數據不大于99的話不取余也可,就是原數除10,商做高四位,余數做低四位),時鐘8位夠用了。
作者: zhuls    時間: 2024-4-7 18:52
24轉0x24(數字轉換):
(24/10)*16+24%10  ; //===>0x14
24轉16進制(數值變換):
24/16+24%16   ;        //===>0x18
作者: wulin    時間: 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);
}
作者: Hephaestus    時間: 2024-4-8 07:57
zhuls 發表于 2024-4-7 18:52
24轉0x24(數字轉換):
(24/10)*16+24%10  ; //===>0x14
24轉16進制(數值變換):

你查下NMEA0183格式,人家是ASCII字符串!
作者: 自己想安靜    時間: 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;
}

作者: coody_sz    時間: 2024-4-23 15:51
((((a*10)+b)*10+c)*10+d)*10....
作者: 1534545848    時間: 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       
作者: Hephaestus    時間: 2024-4-23 17:19
1534545848 發表于 2024-4-23 16:09
BCD整數轉換為二進制整數(3位)       
;入口:R0(高位地址),N位數;出口:R2,R3,R4       
;占用資源:ACC,B;堆棧需求:2字 ...

不對,樓主要的是ascii碼轉十六進制。
作者: lxm41577    時間: 2024-7-25 09:55
經過多天思考,有了個想法,可以根據十位上的數乘一個基數6,如10 十位是1,6乘以1得6,20 十位是2,6乘以2得12,30 十位是3,6乘以3得18,如此類推,再相加本數
結果就是如,十進制#30,轉換后就是十六進制#48H
作者: 2300606886    時間: 2024-7-25 10:31
十進制轉化為十六進制計算方式,簡單說就是整數除以16取余,直到商為0為止,然后從最后一個余數讀到第一個

作者: 188610329    時間: 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 !!!!!
你這多天思考,都思考了啥?拿個筆算算,都不會算成這樣。
作者: lxm41577    時間: 2024-7-27 14:56
188610329 發表于 2024-7-26 21:17
暈死, 暈倒徹底死的那種, 十進制  48, 轉成16進制  才是 30H  !!!!
而不是 十進制 30 轉成 16進制 ...

兄弟,也許你看不上我的方法,我搞單片機只是愛好,為了這個SD1302走時,GPS校對的時鐘,我想了好久,我秉持的是能用即為合理的原則,這個方法已經在我的時鐘上,正常運行了幾天了,以后有問題交流交流
作者: 藍藍小星星    時間: 2024-7-27 15:51
10位一個數就增加6,相當于擴大了1.6倍。
10進制的數先整合到16進制的數,10位的就x10,個位保持,最后相加。就已經是16進制的數了。
比如8位的值,4c可拆分為4與c。以此類推
作者: xianfajushi    時間: 2024-7-27 18:18


作者: 51Proteus0001    時間: 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(小寫)或可能需要其他函數來執行轉換




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩久久一区 | 精品一区三区 | 国产不卡视频 | 成人深夜福利视频 | 成人a毛片 | 欧美日韩第一区 | 久久久不卡 | 欧美日韩成人一区二区 | 欧美色影院 | 中文字幕日本 | 精品日韩一区二区三区 | 国产一区中文字幕 | 亚洲毛片视频 | 新av在线 | 美女免费视频网站 | 欧洲精品一区二区 | 日本少妇网站 | 99精品色| 中文字幕在线看 | 亚洲国产精品久久久久 | 午夜在线观看视频 | 欧美专区第一页 | 综合一区二区三区 | 中文一区二区 | 亚洲黄色成人 | 国产伦精品一区二区三区视频网站 | 国产精品成人免费视频 | 97久久超碰 | h片免费看| 日日干天天干 | 免费视频a | 伊人av影院| 国产精品国产精品国产专区不卡 | 午夜在线观看视频网站 | 天天插天天狠天天透 | 特黄老太婆aa毛毛片 | 国产一区精品在线观看 | 国产欧美激情 | 五月在线视频 | 一起操在线 | 看黄网站在线观看 |