如何将一串二进制数转换为 C 中的字符(每个字符必须有一个半字节)?
How can I convert a string of binary numbers into characters in C (each character has to have a nibble)?
我已经在寻找可用于将我的二进制数字字符串转换为 ASCII 字符字符串的有用函数。我尝试使用这些 C++ 库转换字符串
#include <sstream>
#include <iostream>
但我的编程环境(来自国家仪器的CVI)没有它们。
如果有人有转换函数的例子,我会很高兴!
提前致谢。
你的问题很含糊,没有显示实际尝试,这使得你更难理解你的意思。
也许是这样的:
#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 = '[=10=]';
}
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),请注意。
我已经在寻找可用于将我的二进制数字字符串转换为 ASCII 字符字符串的有用函数。我尝试使用这些 C++ 库转换字符串
#include <sstream>
#include <iostream>
但我的编程环境(来自国家仪器的CVI)没有它们。 如果有人有转换函数的例子,我会很高兴! 提前致谢。
你的问题很含糊,没有显示实际尝试,这使得你更难理解你的意思。
也许是这样的:
#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 = '[=10=]';
}
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),请注意。