我正在尝试创建一个十六进制到base64转换器。我不知道我是否正朝着正确的方向转换二进制文件,正如我现在尝试做的那样,或者是否有更直接的转换方式。有关转换数学或如何将十六进制编码到base64的任何建议都会非常有用。
相反,我一直收到错误(更新代码后的新错误):
hexto64.c: In function ‘main’:
hexto64.c:21:17: error: lvalue required as left operand of assignment
ReVerse(input) = RevHex;
^
如果有人可以帮助解释此错误的含义以及如何修复 会有很大的帮助!提前谢谢。
编辑:感谢评论中的少数人,我现在理解错误了。
这是我的代码(更新):
#include <stdio.h>
#include <math.h>
#include <string.h>
char ReVerse(const char *str)
{
if (*str != '\0')
ReVerse((str + 1));
printf("%c", *str);
}
int main()
{
char RevHex;
char input[4096] = {0};
printf("Enter Hexadecimal: ");
scanf("%s", input);
RevHex = ReVerse(input);
printf("\n");
return 0;
}
上次修改:我在代码中发现了错误。谢谢大家的反馈!
答案 0 :(得分:1)
您尝试使用函数ReVerse()
的返回值,但此函数返回void
。它没有&#34;没有&#34;所以你不能分配什么&#34;某事。在这里,您尝试将数组RevHex
放到&#34;没有&#34;。这没有用。
答案 1 :(得分:1)
如果您的函数只是反转输入的十六进制字符串,那么您可以这样做:
#include <stdio.h>
#include <math.h>
#include <string.h>
void ReVerse(const char *str) {
if (*str != '\0')
ReVerse((str + 1));
printf("%c", *str); }
int main() {
char input[10] = {0};
printf("Enter Hexadecimal: ");
scanf("%s", input);
ReVerse(input);
printf("\n");
return 0; }
这里我不认为这个字符RevHex [4096] = {0};很有用。因为要反转输入字符串。如果你像这样实现它,那么这个程序将起作用。 在谈论你的程序时,你将一个字符串值赋给一个void函数,这就是它给出错误的原因。
答案 2 :(得分:0)
我不知道如何“修复”这个但是尝试将RevHex
分配给函数会引发错误。
鉴于ReVerse没有返回任何内容,我不确定RevHex的用途是什么......
答案 3 :(得分:0)
错误就在这一行:ReVerse(input) = RevHex;
你无法为调用void函数赋值,你应该将它作为参数传递给函数。