[英]Convert C# Code to C++ : Hex to Binary
Hello All, 大家好,
I have some C# code and would like to convert it to C++. 我有一些C#代码,并希望将其转换为C ++。 I have been trying and googling for several different ways, however is there just some easy fixes to this code snippet to make it C++ compatible?
我一直在尝试和谷歌搜索几种不同的方式,但是这个代码片段只是一些简单的修复,使其与C ++兼容? I am a novice is C++:
我是C ++的新手:
static std::string Hex2Bin(std::string sHexavalue)
{
std::string binaryValue = "";
char charArray[] = sHexavalue::toupper.ToCharArray();
for( int n=0; n < sHexavalue.length(); n++)
{
switch (charArray[n])
{
case '0':
binaryValue += "0000";break;
case '1':
binaryValue += "0001";break;
case '2':
binaryValue += "0010";break;
case '3':
binaryValue += "0011";break;
case '4':
binaryValue += "0100";break;
case '5':
binaryValue += "0101";break;
case '6':
binaryValue += "0110";break;
case '7':
binaryValue += "0111";break;
case '8':
binaryValue += "1000";break;
case '9':
binaryValue += "1001";break;
case 'A':
binaryValue += "1010";break;
case 'B':
binaryValue += "1011";break;
case 'C':
binaryValue += "1100";break;
case 'D':
binaryValue += "1101";break;
case 'E':
binaryValue += "1110";break;
case 'F':
binaryValue += "1111";break;
}
}
return binaryValue;
}
My Error occurs when I have sHexavalue to be changed to uppercase and ToCharArray. 当我将sHexavalue更改为大写和ToCharArray时发生我的错误。 I receieve this error: IntelliSense: initialization with '{...}' expected for aggregate object
我接收到这个错误:IntelliSense:初始化为'{...}'期望聚合对象
So I know there is still lots of "conversion" from C# to C++ but I just need to know if it is possible to have the snippet converted in a quick simple way. 所以我知道从C#到C ++仍有很多“转换”,但我只需要知道是否可以快速简单地转换代码片段。
EDIT: Here is the original source: 编辑:这是原始来源:
//convert a Hexa value string to a binary value string
public static string Hex2Bin(string sHexavalue)
{
string binaryValue = "";
char[] charArray = sHexavalue.ToUpper().ToCharArray();
for( int n=0; n < sHexavalue.Length; n++)
{
switch (charArray[n])
{
case '0':
binaryValue += "0000";break;
case '1':
binaryValue += "0001";break;
case '2':
binaryValue += "0010";break;
case '3':
binaryValue += "0011";break;
case '4':
binaryValue += "0100";break;
case '5':
binaryValue += "0101";break;
case '6':
binaryValue += "0110";break;
case '7':
binaryValue += "0111";break;
case '8':
binaryValue += "1000";break;
case '9':
binaryValue += "1001";break;
case 'A':
binaryValue += "1010";break;
case 'B':
binaryValue += "1011";break;
case 'C':
binaryValue += "1100";break;
case 'D':
binaryValue += "1101";break;
case 'E':
binaryValue += "1110";break;
case 'F':
binaryValue += "1111";break;
}
}
return binaryValue;
}
Consider some suggestions: 考虑一些建议:
Since the sHexValue
is a read-only input parameter , pass by const reference ( const &
): 由于
sHexValue
是只读输入参数 ,因此传递const引用( const &
):
std::string Hex2Bin(const std::string & sHexValue)
(It's more efficient than passing the std::string
by value.) (它比通过值传递
std::string
更有效。)
No need to do the ToCharArray()
C# conversion in C++. 无需在C ++中进行
ToCharArray()
C#转换。
You can access single char
s in a std::string
using operator[]
. 您可以使用
operator[]
访问std::string
中的单个char
。
You can manage the upper and lower case for AF
using multiple case
fall-through: 您可以使用多个
case
直通来管理AF
的大写和小写:
case 'A': case 'a': .... break; // valid for both 'A' and 'a'
Here's a possible rewrite in C++: 这是C ++中可能的重写:
// Convert a hex value string to a binary value string.
std::string Hex2Bin(const std::string & sHexValue)
{
std::string binaryValue; // automatically initialized to empty string
for (int n = 0; n < sHexValue.size(); ++n)
{
switch (sHexValue[n])
{
case '0':
binaryValue += "0000"; break;
case '1':
binaryValue += "0001"; break;
case '2':
binaryValue += "0010"; break;
case '3':
binaryValue += "0011"; break;
case '4':
binaryValue += "0100"; break;
case '5':
binaryValue += "0101"; break;
case '6':
binaryValue += "0110"; break;
case '7':
binaryValue += "0111"; break;
case '8':
binaryValue += "1000"; break;
case '9':
binaryValue += "1001"; break;
case 'A': case 'a':
binaryValue += "1010"; break;
case 'B': case 'b':
binaryValue += "1011"; break;
case 'C': case 'c':
binaryValue += "1100"; break;
case 'D': case 'd':
binaryValue += "1101"; break;
case 'E': case 'e':
binaryValue += "1110"; break;
case 'F': case 'f':
binaryValue += "1111"; break;
}
}
return binaryValue;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.