处理一些在函数中需要unsigned char的加密,但想要在解密后转换为char使用。所以,我有:
unsigned char plaintext[16];
char *plainchar;
int plainint;
... Code now populates plaintext with data that happens to all be plain text
现在在这一点上,让我们说明文实际上是一个“0123456789”的数据字符串。如何将明文的值作为“012456789”获取为plainchar,同时将plainint作为123456789?
- 编辑 -
当明文等于“AAAAAAAAAA105450”时执行此操作:
unsigned char plaintext[16];
char *plainchar;
int plainint;
... Code now populates plaintext with data that happens to all be plain text
plainchar = (char*)plaintext;
使plainchar等于“AAAAAAAAAA105450╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠┤∙7”,sizeof = 51加密代码是rijndael示例代码,所以应该可以正常工作。
谢谢, 本
答案 0 :(得分:5)
您的纯文本字符串未终止。所有字符串都必须有一个额外的字符,告诉字符串的结尾。此字符为'\0'
。
将plaintext
变量声明为
unsigned char plaintext[17];
完成解密后,添加此
plaintext[last_pos] = '\0';
将last_pos
更改为解密文本的最后位置,默认为16
(数组的最后一个索引)。
答案 1 :(得分:1)
我认为它只是
plainchar = (char*)plaintext;
sscanf( plainchar, "%d", &plainint );
答案 2 :(得分:1)
对于unsigned char to char *
plainchar = (char*)plaintext;
for unsigned to int
sscanf( plainchar, "%d", &plainint );