C++ 将字符数组转换为二进制并返回数组
我正在尝试将字符数组转换为十六进制和二进制。然后将这些值作为字符数组返回,将其写入标准输出。由于我不允许对输出使用C++ 将字符数组转换为二进制并返回数组,c++,C++,我正在尝试将字符数组转换为十六进制和二进制。然后将这些值作为字符数组返回,将其写入标准输出。由于我不允许对输出使用cout,因此我将无法使用十六进制IO操纵器来完成此操作。同样,也不允许使用%x格式的printf系列函数 constexpr char hexmap[]={'0','1','2','3','4','5','6','7',', ‘8’、‘9’、‘a’、‘b’、‘c’、‘d’、‘e’、‘f’}; 字符*hexa(字符缓冲区[],整数大小){ 字符串str; char*q=新字符[100
cout
,因此我将无法使用十六进制IO操纵器来完成此操作。同样,也不允许使用%x格式的printf系列函数
constexpr char hexmap[]={'0','1','2','3','4','5','6','7',',
‘8’、‘9’、‘a’、‘b’、‘c’、‘d’、‘e’、‘f’};
字符*hexa(字符缓冲区[],整数大小){
字符串str;
char*q=新字符[10000];
对于(int i=0;i>4];
q[i]+=hexmap[(字节&0x0F)>>0];
}
//对于(int i=0;i //cout建议:。使用调试器对代码进行一步。查找程序执行意外操作的位置。使用描述性变量名。我不想与您陷入还原战,因此请解释putty与此问题的关系。据我所知,它在这里没有任何用途,只是作为数百个po之一可能的终端模拟器。在函数hexa()
您将丢失前导二进制零位。如果您需要前导二进制零位,则需要循环8个字符位中的每一位,并在每个循环周期中右移。为什么不将结果作为字符串返回,并避免分配内存?我必须使用写函数将其打印出来。@hacobo我必须使用写函数打印出来——这如何防止返回std::string
?您认为无法打印std::string
的内容吗?您的代码中绝对不需要新字符[]
或字符指针。一切都可以使用std::string
完成。
% cat file1
Hello World
% ./dog n 5 x file1
65486c6c6f
% ./dog n 5 b file1
0110010101001000011011000110110001101111
Binary:1001000110111010010010000
Hex:lk▒▒▒beio▒kbknojbg▒▒b▒lk▒