你好,我想知道如何将十六进制数组转换为十进制
这是我的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
预先谢谢你
答案 0 :(得分:1)
正如埃里克(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};
在十六进制和十进制之间进行更改不会改变程序的行为。