我的4字节数据包含ASCII十进制数7,0,0,如下所示。地址20处的data c[0][20] =7, c[0][21] =0, c[0][22] =0, c[0][23] =0
我不明白为什么我可以通过printf(" s= %s\t\n", s.c_str());获得任何输出。但是我可以用printf(" s= %d\t\n", (int)c[0][20]);得到输出7什么是获得所有4字节打印输出的正确方法?
const char * c[3];
char cs[5];
memcpy(cs, c[0] + 20, 4);
string s (cs,4);
printf(" s= %s\t\n", s.c_str());
printf(" s= %d\t\n", (int)c[0][20]);发布于 2019-01-29 01:03:28
尝试:
printf(" s =");
for (int i = 0; i < 4; ++i)
{
printf(" %d ", (int)c[0][20+i]);
}
printf("\n");发布于 2019-01-28 23:38:45
试试看。
for (size_t z = 0; z < 4; z++)
{
printf("element %zu is %c\n", z, c[z]);
}以验证值是否为您所认为的值。
ASCII7是钟形字符,当您打印它时,它可能会产生某种音调。
https://stackoverflow.com/questions/54405205
复制相似问题