簡體   English   中英

如何使用C語言將十六進制數組轉換為十進制

[英]How to convert hexadecimal array to decimal using C language

您好我想知道如何將十六進制數組轉換為十進制這是我的block

uint8_t block[8] = {0xb,0xb,0xb,0xa,0xa,0xa,0xa,0xa}; 這是我的代碼

#include "stdint.h"

void main() {

   uint8_t block[8] = {0xb,0xb,0xb,0xa,0xa,0xa,0xa,0xa};

   uint8_t key[16]  = {0xa,0xa,0xa,0xb,0xb,0xb,0xb,0xb,
                       0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa};

   UART1_Init(9600);  // Initialisation de l’UART1 à 9600 bps
   UART1_Write_Text("message:");
   UART1_Write_Text(block);
   UART1_Write_Text(" TEA Encryption:");
   TEA_Enc(block, key);
   UART1_Write_Text(block);

   UART1_Write_Text("TEA Decryption:");
   TEA_Dec(block, key);
   UART1_Write_Text(block);
} 

例如,如果我顯示block我希望得到像123456這樣的結果,謝謝

正如Eric和Eugene在評論中所說, 無法將十六進制數轉換為十進制數 十六進制或十進制僅存在於您編寫的代碼中。 一旦編譯器看到一個數字,它將以其自己的表示形式將其存儲在內存中。

這是一個示例,說明如何在代碼中以不同的表示形式寫數字。 我在以下代碼中寫的所有數字都相同。 該程序不會更改,無論您使用哪個。

int x = 0x10;
// stored in memory as:
// |0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|0|

int x = 16;
// stored in memory as:
// |0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|0|

int x = 0b00000000000000000000000000010000;
// stored in memory as:
// |0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|0|

int x = 020;
// stored in memory as:
// |0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|0|

因此,在您的示例中,您可以使用以下兩種方式來代表您的block

uint8_t block_hex[8] = {0xb,0xb,0xb,0xa,0xa,0xa,0xa,0xa};
uint8_t block_dec[8] = {11,11,11,10,10,10,10,10};

在十六進制和十進制之間進行更改不會更改程序的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM