【发布时间】:2017-04-01 14:42:34
【问题描述】:
所以我正在编写一个 C++ 程序来读取文本文件,找到每个字符的数字 ASCII 值并将其转换为十六进制,然后将其输出到屏幕上,但我会不断插入这些随机的新行出现以“C”结尾的十六进制值。
这是我用来转换为十六进制的代码:
std::string HexConvert(char character) {
char HEX[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
int ASCII = (int) character;
if (ASCII > 255 || ASCII < 32) {
return "20";
} else {
std::vector<char> binaryVec = binaryConvert(ASCII);
std::string binaryVal(binaryVec.begin(), binaryVec.end());
binaryVal = binaryVal.substr(binaryVal.length() - 8, 8);
std::string bin1 = binaryVal.substr(0, 4);
std::string bin2 = binaryVal.substr(4, 4);
int hex1 = ((bin1[0] - 48)*8) + ((bin1[1] - 48)*4) + ((bin1[2] - 48)*2) + ((bin1[3] - 48)*1);
int hex2 = ((bin2[0] - 48)*8) + ((bin2[1] - 48)*4) + ((bin2[2] - 48)*2) + ((bin2[3] - 48)*1);
char hexVal[2] = { HEX[hex1], HEX[hex2] };
std::string hexValue(hexVal);
return hexValue;
}
}
【问题讨论】:
-
请不要发文字图片。