有没有办法将 INT 和字符串存储在同一个数组中?
Is there a way to store INT and strings in the same array?
我不确定解析是如何工作的,我也无法在 C++ 中完成。
我创建了一种将小数转换为十六进制的算法。该算法现在仍然输出大于 9 的值,例如 10
而不是 A
。下面的函数本来可以解决这个问题的,但是当我 运行 它通过时,我无法将正常的 1-9 值与 As 和 Bs 存储在同一个数组中,这意味着我无法输出它们.我已经坚持了 2 天了。
string hexValues(int remainder)
{
string A = "A";
string B = "B";
string C = "C";
string D = "D";
string E = "E";
string F = "F";
if (remainder == 10)
{
return A;
}
else if (remainder == 11)
{
return B;
}
else if (remainder == 12)
{
return C;
}
else if (remainder == 13)
{
return D;
}
else if (remainder == 14)
{
return E;
}
else if (remainder == 15)
{
return F;
}
}
hexMod = userDecNumber4Hex % 16;
if (hexMod > 9)
{
hexadecimalAnswer[y] = hexValues(hexMod);
}
else
{
hexadecimalAnswer[y] = hexMod;
}
while (userDecNumber4Hex != 0)
{
if (userDecNumber4Hex % 16 != 0)
{
hexMod = userDecNumber4Hex % 16;
if (hexMod > 9)
{
hexadecimalAnswer[y] = hexValues(hexMod);
}
else
{
hexadecimalAnswer[y] = hexMod;
}
userDecNumber4Hex = (userDecNumber4Hex-hexMod)/ 16;
y += 1;
}
else if (userDecNumber4Hex % 16 == 0)
{
userDecNumber4Hex = userDecNumber4Hex / 16;
if (userDecNumber4Hex > 9)
{
hexadecimalAnswer[y] = userDecNumber4Hex;
}
}
}
代码很长,所以我不太确定要做什么 post 但是有多个数组 - 但它只是其中一个我需要存储从 hexValues 函数获取的值,而它已经有 int 值
由于您的十六进制数中的整数只会介于 0
和 9
之间,您可以将它们存储为字符。同时,您也可以将 A
-F
存储为字符。
因此,改为 return 个字符作为面值。
char hexValues (int remainder)
{
if (remainder < 10)
return '0' + remainder;
else
return 'A' + (remainder - 10);
}
对于完全转换,这里有一个使用递归的好借口:
string decToHex (int n)
{
if (n < 16)
{
string s (1, decToHex (n));
return s;
}
else
return decToHex (n / 16) + hexValues (n % 16);
}
我不确定解析是如何工作的,我也无法在 C++ 中完成。
我创建了一种将小数转换为十六进制的算法。该算法现在仍然输出大于 9 的值,例如 10
而不是 A
。下面的函数本来可以解决这个问题的,但是当我 运行 它通过时,我无法将正常的 1-9 值与 As 和 Bs 存储在同一个数组中,这意味着我无法输出它们.我已经坚持了 2 天了。
string hexValues(int remainder)
{
string A = "A";
string B = "B";
string C = "C";
string D = "D";
string E = "E";
string F = "F";
if (remainder == 10)
{
return A;
}
else if (remainder == 11)
{
return B;
}
else if (remainder == 12)
{
return C;
}
else if (remainder == 13)
{
return D;
}
else if (remainder == 14)
{
return E;
}
else if (remainder == 15)
{
return F;
}
}
hexMod = userDecNumber4Hex % 16;
if (hexMod > 9)
{
hexadecimalAnswer[y] = hexValues(hexMod);
}
else
{
hexadecimalAnswer[y] = hexMod;
}
while (userDecNumber4Hex != 0)
{
if (userDecNumber4Hex % 16 != 0)
{
hexMod = userDecNumber4Hex % 16;
if (hexMod > 9)
{
hexadecimalAnswer[y] = hexValues(hexMod);
}
else
{
hexadecimalAnswer[y] = hexMod;
}
userDecNumber4Hex = (userDecNumber4Hex-hexMod)/ 16;
y += 1;
}
else if (userDecNumber4Hex % 16 == 0)
{
userDecNumber4Hex = userDecNumber4Hex / 16;
if (userDecNumber4Hex > 9)
{
hexadecimalAnswer[y] = userDecNumber4Hex;
}
}
}
代码很长,所以我不太确定要做什么 post 但是有多个数组 - 但它只是其中一个我需要存储从 hexValues 函数获取的值,而它已经有 int 值
由于您的十六进制数中的整数只会介于 0
和 9
之间,您可以将它们存储为字符。同时,您也可以将 A
-F
存储为字符。
因此,改为 return 个字符作为面值。
char hexValues (int remainder)
{
if (remainder < 10)
return '0' + remainder;
else
return 'A' + (remainder - 10);
}
对于完全转换,这里有一个使用递归的好借口:
string decToHex (int n)
{
if (n < 16)
{
string s (1, decToHex (n));
return s;
}
else
return decToHex (n / 16) + hexValues (n % 16);
}