Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C中的无符号字符到字符*和int?_C_Visual Studio 2010_Char_Int_Unsigned Char - Fatal编程技术网

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

C中的无符号字符到字符*和int?,c,visual-studio-2010,char,int,unsigned-char,C,Visual Studio 2010,Char,Int,Unsigned Char,正在处理一些加密,这些加密需要函数中的未签名字符,但希望在解密后转换为字符以供使用。因此,我: unsigned char plaintext[16]; char *plainchar; int plainint; ... Code now populates plaintext with data that happens to all be plain text 现在,让我们假设明文实际上是一个数据字符串“0123456789”。如何将明文的值转换为“012456789”,同时将明文转换

正在处理一些加密,这些加密需要函数中的未签名字符,但希望在解密后转换为字符以供使用。因此,我:

unsigned char plaintext[16];
char *plainchar;
int plainint;

... Code now populates plaintext with data that happens to all be plain text
现在,让我们假设明文实际上是一个数据字符串“0123456789”。如何将明文的值转换为“012456789”,同时将明文转换为123456789

--编辑--

当纯文本等于“aaaaaaaa105450”时执行此操作:

使plainchar等于“AAAAAAAAAA105450╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠┤∙7英寸,尺寸f=51。加密代码是rijndael示例代码,因此应该可以正常工作

谢谢, 本

我认为这很简单

plainchar = (char*)plaintext;
sscanf( plainchar, "%d", &plainint );

对于未签名字符到字符*

plainchar = (char*)plaintext;
对于unsigned to int

sscanf( plainchar, "%d", &plainint );

您的纯文本字符串未终止。所有字符串必须有一个额外的字符,告诉字符串的结尾。此字符是
'\0'

纯文本
变量声明为

unsigned char plaintext[17];
完成解密后,添加以下内容

plaintext[last_pos] = '\0';

last_pos
更改为解密文本的最后一个位置,默认为
16
(数组的最后一个索引)。

我希望您不会认为字符串“1234”(0x31323334)在任何方面等同于二进制字符数组“0x01020304”。只是检查一下;)请参阅检查您的加密algorithm@BenCurtis:更新您的问题,而不是使用评论。谢谢(和@Sodved),除非这不会为我带来预期的结果。出于某种原因,如果纯文本是“AAAAAA123456”,并且我执行了上述操作,则plainchar现在等于“AAAA123456”,并且报告的大小为51。想法?@BenCurtis你的意思肯定是
strlen
reports 51
sizeof
只关心其参数的类型,
sizeof plainchar
char*
的大小,而不管
纯文本的内容是什么。哇。我离开C太久了。工作得很有魅力。谢谢
plaintext[last_pos] = '\0';