无符号字符到char *和C中的int?

时间:2012-09-24 02:10:09

标签: c visual-studio-2010 char int unsigned-char

处理一些在函数中需要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示例代码,所以应该可以正常工作。

谢谢, 本

3 个答案:

答案 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 );