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

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

作者: 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://www.raoushi.com/bbs/) Powered by Discuz! X3.1