c++ - 将 char 数组转换为二进制并返回数组
问题描述
我正在尝试将 char 数组转换为十六进制和二进制。然后将这些值作为 char 数组返回以将其写入标准输出。由于我不允许cout
用于输出,我将无法使用十六进制 IO 操纵器来完成此操作。同样,也不允许使用格式为 %x 的 printf 系列函数。
constexpr char hexmap[] = {'0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
char *hexa(char buffer[],int size){
string str;
char *q = new char[10000];
for( int i = 0; i < size; ++i )
{
char const byte = buffer[i];
q[i] += hexmap[ ( byte & 0xF0 ) >> 4 ];
q[i] += hexmap[ ( byte & 0x0F ) >> 0 ];
}
// for (int i = 0; i < str.length();i++){
// q[i] = str[i];
// cout << q[i];
// }
return q;
}
char *binary(char buffer[]){
string n(buffer);
int s = n.length();
string t = "";
for (int i = 0; i <= s; i++) {
int val = int(n[i]);
string bin = "";
while (val > 0){
(val % 2)? bin.push_back('1'):
bin.push_back('0');
val /= 2;
}
reverse(bin.begin(),bin.end());
t += bin;
}
char *c = new char[t.length()];
for (int i = 0; i < t.length(); ++i){
c[i] = t[i];
}
return c;
}
% 猫文件1 你好世界 % ./dog n 5 x 文件1 65486c6c6f % ./dog n 5 b 文件1 0110010101001000011011000110110001101111
我的结果:
二进制:1001000110111010010010000 十六进制:lk▒▒▒beio▒kbknojbg▒▒b▒lk▒
解决方案
推荐阅读
- python - 用Python删除字符串中相邻的重复单词?
- html - Razor Pages - 边输入边搜索
- java - 使用 DJL(Deep Java Library)时,哪个 Java 类与 python Pandas DataFrame 兼容?
- html - img 和 div 之间的空格
- java - Hazelcast将地址添加到黑名单并且客户端未连接
- next.js - 将哨兵添加到nextjs项目后无法运行服务器
- laravel - npm run dev:[webpack-cli] 错误:找不到模块“gensync”
- material-ui - 将素材ui从v4升级到v5后,jss-rtl插件不起作用
- powershell - 将 Powershell 命令的输出保存到变量中
- java - 无效 XML:第 6 行错误:元素类型“hr”必须由匹配的结束标记“”终止