我正在尝试将 C# 代码转换为 C
原来的C#代码是
从下面的代码调用 Hex2Binary 方法
private string DEtoBinary(string HexDE)
{
string deBinary = "";
for (int I = 0; I <= 15; I++)
{
deBinary = deBinary + Hex2Binary(HexDE.Substring(I, 1));
}
return deBinary;
}
//Hex2Binary方法
private string Hex2Binary(string DE)
{
string myBinary = "";
switch (DE)
{
case "0":
myBinary = "0000";
break;
case "1":
myBinary = "0001";
break;
.
.
.
}
}
但是当我用 C 语言编写时,我采用如下所示的参数
char *Hex2Binary(char DE[])
{
char *myBinary = "";
switch (DE)
{
case "0":
myBinary = "0000";
break;
case "1":
myBinary = "0001";
break;
case "2":
myBinary = "0010";
break;
.
.
}
}
我得到的错误是 开关数量不是整数。
最佳答案
C 的开关仅适用于整数。在您的情况下,您似乎可以将 switch arg 转换为整数:
#include <stdlib> // for strtol
/* char* is a more typical string representation than char[] */
char *Hex2Binary(char* DE)
{
char *myBinary;
long de_as_long = strtol(DE, NULL, 16);
switch (de_as_long)
{
case 0:
myBinary = "0000";
break;
/* ... */
只有当 DE 的所有可能值都可以转换为整数时,这才有效。
关于c - 在 switch 语句中错误是 Switch quantity not an integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33405248/