gpt4 book ai didi

c - 二进制添加大型字符数组?

转载 作者:行者123 更新时间:2023-11-30 14:26:16 24 4
gpt4 key购买 nike

所以我有一个 16 个字符的数组,定义如下..

char CBlock[16];

在我的程序中,我正在实现 CTR 模式加密(不是很重要,只是说一下),并且 CBlock 被初始化为随机的 128 位十六进制值。我的程序需要做的是在循环执行加密的消息 block 时将该 block 递增 1 多次。即

for (i = 0; i < SOME_BIG_NUMBER; i++){
CBlock = CBlock + 1; /*i know this isn't legal*/
/*do some stuff*/
}

有没有简单的方法来进行此添加?有没有一种方法可以简单地将 CBlock 视为一个连续的数据 block ?或者我是否必须使用进位等手动实现二进制(十六进制)加法..

编辑:抱歉,CBlock 声明是错误的。

最佳答案

一般来说,您可以通过跟踪进位来自己实现加法。

unsigned char CBlock[16]; /* unsigned char is assumed to be at least an 8 bit type. */
/* Increment CBlock by 1. */

int carry = 1;
int i;

for (i=0; i<16; i++) {
int sum = CBlock[i] + carry;
CBlock[i] = (unsigned char) (sum & 0xff);
carry = sum >> 8;
if (carry == 0) {
break;
}
}

/* if (carry > 0) { we have overflowed} */

关于c - 二进制添加大型字符数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9364403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com