【问题标题】:How to convert hexadecimal array to decimal using C language如何使用C语言将十六进制数组转换为十进制
【发布时间】:2019-07-18 20:28:07
【问题描述】:

您好,我想知道如何将十六进制数组转换为十进制 这是我的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 这样的结果 提前谢谢你

【问题讨论】:

  • 没有什么可以转换的。一个数字同时存在于所有可能的碱基中。
  • 你好 Eugene Sh 你看到block 如果可能的话,我想用十进制表示
  • 正如我所说。这是一堆数字,这些数字与您表示它们的方式无关。那就是uint8_t block[8] = {0xb,0xb...uint8_t block[8] = {11,11...一模一样
  • 您需要澄清您的术语和问题。 “十六进制”是一种符号,其中 16 个符号用于表示以 16 为基数的位置数字系统中的数字。通常使用字符“0”到“9”和“A”到“F”(或其对应的小写字母)作为 16 个符号。也可以使用数字 0 到 15。您的 block 是一个包含数字 11 和 10 的数组。“十进制”是一种符号,其中十个符号用于以 10 为底的系统中。将十六进制转换为十进制将产生由数字“0”到“9”组成的数字。它不会是“你好世界”。这些是字符。
  • 评论者一直试图说block 不是十六进制的不是,只是你初始化它的方式。它包含数字数据,十进制、二进制、十六进制仅在您如何打印供人类消费的值的上下文中才有意义。

标签: c


【解决方案1】:

正如 Eric 和 Eugene 在 cmets 中所说,没有办法将十六进制数转换为十进制数。十六进制或十进制仅存在于您编写的代码中。一旦编译器看到一个数字,它将以自己的表示形式将其存储在内存中。

这是一个示例,说明如何在代码中以不同的表示形式编写数字。我在下面的代码中写的所有数字都是一样的。无论您使用哪个程序,该程序都不会改变。

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};

在十六进制和十进制之间切换不会改变程序的行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    • 2013-07-20
    • 2012-06-17
    • 2019-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多