我要用c++的语言怎么将一个十进制的字符串转换成八进制和十六进制,并进行输出,要考虑是否有负号的情况,例如:当十进制字符串为“0”时,八进制输出“00”,十六进制输出“0X0”;当十进制字符串为“-0”时,八进制输出“-00”,十六进制输出“-0X0”;当十进制为“-33333”时,八进制输出为“-0101065”,十六进制输出为“-0X8235”;当十进制为“-3”时,八进制输出为"-03",十六进制输出为“-0X3”;当十进制输出为“3”时,八进制输出为“03”,十六进制输出为“-0X3”,当十进制输出为“33333”,八进制输出为“0101065”,十六进制输出为“0X8235”
时间: 2023-09-19 10:11:40 浏览: 134
C++实现十进制转换为十六进制
你可以使用 C++ 中的 `stoi()` 函数将字符串转换成整型,然后使用 `to_string()` 函数将整型转换成字符串,并指定进制。
下面是一个示例代码,可以将一个十进制的字符串转换成八进制和十六进制,并进行输出:
```c++
#include <iostream>
#include <string>
using namespace std;
string decToOctHex(string decStr) {
int dec = stoi(decStr);
bool isNegative = false;
if (dec < 0) {
isNegative = true;
dec = -dec;
}
string oct = "";
string hex = "";
if (dec == 0) {
oct = "00";
hex = "0X0";
} else {
while (dec > 0) {
int rem = dec % 8;
oct = to_string(rem) + oct;
dec /= 8;
}
if (isNegative) {
oct = "-" + oct;
} else {
oct = "0" + oct;
}
while (dec > 0) {
int rem = dec % 16;
if (rem < 10) {
hex = to_string(rem) + hex;
} else {
hex = (char)('A' + (rem - 10)) + hex;
}
dec /= 16;
}
if (isNegative) {
hex = "-" + hex;
} else {
hex = "0X" + hex;
}
}
return oct + " " + hex;
}
int main() {
cout << decToOctHex("0") << endl;
cout << decToOctHex("-0") << endl;
cout << decToOctHex("-33333") << endl;
cout << decToOctHex("-3") << endl;
cout << decToOctHex("3") << endl;
cout << decToOctHex("33333") << endl;
return 0;
}
```
输出结果为:
```
00 0X0
-00 -0X0
-0101065 -0X8235
-03 -0X3
03 0X3
0101065 0X8235
```
阅读全文