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 51sizeof
只关心其参数的类型,sizeof plainchar
是char*
的大小,而不管纯文本的内容是什么。哇。我离开C太久了。工作得很有魅力。谢谢
plaintext[last_pos] = '\0';