首页 > 解决方案 > C: 如何使用 sizeof 分割一个字符?

问题描述

我有一个 char 数组,我想每 16 个字节拆分一次。这是如何在 C 中完成的?目的是用其他东西替换 16 个字节中的每个字节。

我已经实现了替换功能,所以我只需要每 16 个字节使用一次。在伪代码中:

      void sub(unsigned char* s){

                for (int i = 0; i < 16; i++)
                {
                    state[i] = S[state[i]]; //S[] is a char array (S-Box). which consists of the values state needs to be substituted with.
                }

    }
    int main(void){
        char message[] = "This is the message I want to encrypt!"
for every 16 bytes {    
sub(message);
}
    }

标签: cbyte

解决方案


一个例子是

#include <stdio.h>
#include <stdlib.h>

void sub(char *array, size_t size, char target_char)
{
    size_t num_segments = size / 16;
    for(size_t i=0; i<num_segments; ++i)
    {
        array[15 + i * 16] = target_char;
    }
}

int main(int argc, char** argv)
{
    if (argc != 3)
    {
        printf("need 3 args\n");
        exit(1);
    }

    size_t size;
    char *array = argv[1];
    printf("original char array: %s\n", array);
    sscanf(argv[2], "%zu", &size);

    sub(argv[1], size, 'x');

    printf("new char array: %s\n", array);
    return 0;
}

推荐阅读