如何将一串二进制数转换为 C 中的字符(每个字符都必须有一个半字节)?
Posted
技术标签:
【中文标题】如何将一串二进制数转换为 C 中的字符(每个字符都必须有一个半字节)?【英文标题】:How can I convert a string of binary numbers into characters in C (each character has to have a nibble)? 【发布时间】:2021-09-01 15:11:03 【问题描述】:我已经寻找了有用的函数,可用于将二进制数字字符串转换为 ASCII 字符字符串。我尝试使用这些 C++ 库转换字符串
#include <sstream>
#include <iostream>
但我的编程环境(来自国家仪器的 CVI)没有它们。 如果有人有转换功能的例子,我会很高兴! 提前非常感谢。
【问题讨论】:
那些不是“库”。 用布尔代数(位掩码,移位)取出半字节,并使用它们来索引文字数组“0123456789ABCDEF”。 您提到的标题是针对 C++ 的,但您已经标记了您的问题 C。您使用的是哪种语言?此外,您需要更清楚“二进制数字串”的含义。 @ScottHunter 头文件?我以为它们被称为库文件。 【参考方案1】:您的问题非常模糊,没有显示任何实际尝试,这使得您更难弄清楚您的意思。
大概是这样的:
#include <stdio.h>
void hexprint(char *out, const void *in, size_t length)
const static char hexdigits[] = "0123456789abcdef";
const unsigned char *bin = in;
while (length--)
const unsigned char here = *bin++;
*out++ = hexdigits[here >> 4];
*out++ = hexdigits[here & 15];
*out = '\0';
int main(void)
char buf[32], data[] = 0xde, 0xad, 0xf0, 0x0d, 0xba, 0xbe ;
hexprint(buf, data, sizeof data);
printf("Got '%s'\n", buf);
return 0;
这会打印出Got 'deadf00dbabe'
。请注意,输出缓冲区默认为 Big Enough(TM),请小心。
【讨论】:
以上是关于如何将一串二进制数转换为 C 中的字符(每个字符都必须有一个半字节)?的主要内容,如果未能解决你的问题,请参考以下文章
java编写将一串字符串中的奇数位提出来相加并且偶数位每个数相加