【发布时间】:2018-04-14 20:36:06
【问题描述】:
我的 PHP 和 C++ 脚本中都有以下字符串:
152F302436152F302435152F302434152F302433152F302433
在 PHP 中,我使用内置的 hex2bin 函数:
<?php
$HEXString = "152F302436152F302435152F302434152F302433152F302433";
echo hex2bin($HEXString);
//Outputs: /0$6/0$5/0$4/0$3/0$3
?>
但是,在 C++ 中,我使用以下函数来完成相同的操作,并获得完整的其他结果:
const char* HexCharToBin(char c) {
char cUpper = toupper(c);
if (cUpper == '0') return "0000";
else if (cUpper == '1') return "0001";
else if (cUpper == '2') return "0010";
else if (cUpper == '3') return "0011";
else if (cUpper == '4') return "0100";
else if (cUpper == '5') return "0101";
else if (cUpper == '6') return "0110";
else if (cUpper == '7') return "0111";
else if (cUpper == '8') return "1000";
else if (cUpper == '9') return "1001";
else if (cUpper == 'A') return "1010";
else if (cUpper == 'B') return "1011";
else if (cUpper == 'C') return "1100";
else if (cUpper == 'D') return "1101";
else if (cUpper == 'E') return "1110";
else if (cUpper == 'F') return "1111";
else return "0000";
}
string HexToBin(const string& hex) {
string bin;
for (unsigned i = 0; i != hex.length(); ++i) {
bin += HexCharToBin(hex[i]);
}
return bin;
}
C++ 代码:
cout << HexToBin("152F302436152F302435152F302434152F302433152F302433") << endl;
//Outputs: 00010101001011110011000000100100001101100001010100101111001100000010010000110101000101010010111100110000001001000011010000010101001011110011000000100100001100110001010100101111001100000010010000110011
我希望 C++ 实现与 PHP 返回相同的字符串。我在这里做错了什么?
【问题讨论】:
-
C++ 和 PHP 是两种完全不同的语言。将两者相提并论可能会适得其反。
-
不熟悉PHP,但是
/0$6/0$5/0$4/0$3/0$3如何对应"152F302436152F302435152F302434152F302433152F302433"? -
@StephanLechner,不知道,但这就是 hex2bin-PHP 函数的工作方式......
-
@Ron,对,但是在 C++ 中是否可以实现与在 PHP 中相同的结果?
-
字符
1(可能)用整数值49表示,2用50表示,以此类推。在 C++ 中,字符是字符。它们具有附加的基本整数值。