Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将字符数组转换为二进制并返回数组_C++ - Fatal编程技术网

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▒