十六进制打印中的零跳过

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十六进制打印中的零跳过相关的知识,希望对你有一定的参考价值。

下面提到的代码使用C提供的time.h库生成密钥。我试图使用变量a逐字节打印键,但是面临的主要问题是,当我将值从key[i]复制到a时,它会跳过零,因为我在打印%.2x时使用了key[i] ],但不在a中。我也想将字节也以零存储在a中,如为key[i]打印的单个字节一样。其次,我想知道如何在单个字符串a]中进行16次迭代后并置finalKey

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define KEYSIZE 16

typedef unsigned char BYTE;

void main()
{
//2018-04-17 23:08:49
//TOTAL SECONDS  = 1,524,006,529
long long int total_seconds = 1524006529;


char finalKey[KEYSIZE];
int i;
char key[KEYSIZE];
int x = 0;
printf("%lld",total_seconds);


for(x = 0;x<7200;x++){
srand (total_seconds--);

    //KEYSIZE = 16 so 16 Iterations each time prints a hexadecimal 
    //HAVE TO STORE WHOLE KEY in finalKey after 16 iterations

    for (i = 0; i< KEYSIZE; i++){

        key[i] = rand()%256;
        BYTE a;


        // printf("%.2x", (unsigned char)key[i]);
        // PRINTS = >  4dd733c6bc3d355ca2f90c4811d2960c

        a = (key[i]&0xFF);
        printf("%x",a);
        // PRINTS =>  4dd733c6bc3d355ca2f9c4811d296c ( removes 0 )


    }

    // system("openssl enc aes-128-cbc -d -in plaintext.txt -out output.txt -k " + finalKey +" -iv 09080706050403020100A2B2C2D2E2F2");

    printf("
");
    }

}

下面提到的代码使用C提供的time.h库生成密钥。我正尝试使用变量a逐字节打印密钥,但是主要的问题是当我复制值时...

答案

您要打印至少两个字符,并用前导零填充。因此使用此:

printf("%02x",a);

以上是关于十六进制打印中的零跳过的主要内容,如果未能解决你的问题,请参考以下文章

Node.js JavaScript 片段中的跳过代码

摆脱python中的零[重复]

在小数点后删除十进制数中的零

PHP - 查找十进制数中的零个数

如何跳过查询条件片段中的空对象?

片段中的recyclerview的“RecyclerView:没有附加适配器;跳过布局”[重复]