user-0 提问: 求助，C中怎么把字符串用其ASCII hex形式打印出来

回复:
user: user-0
content: 引用 4 楼 qzjhjxj 的回复：综合上面1# 2# 3# 楼的，供参考：//C中怎么把字符串用其ASCII hex形式打印出来  //比如char string[]=“{Temeprature=25.61,Humidity=15.62}”，用printf("%02X",string)输出出来是407A40， //其一，输出不完全，其二并不是{Temeprature=25.61,Humidity=15.62}的ASCII hex形式，{Temeprature=25.61,Humidity=15.62} //全部按ASCII hex转换应该是0x7b 0x54 0x65 0x6d 0x65 0x70 0x72 0x61 0x74 0x75 0x72 0x65 0x3d 0x32 0x35 0x2e 0x36 0x31 // 0x2c 0x48 0x75 0x6d 0x69 0x64 0x69 0x74 0x79 0x31 0x35 0x2e 0x36 0x32 0x7d， //目前在网上找到的历例程，对于{}、，，.这样的符号都没法转换，请问各位有能将字符串以其hex形式打印出来的例程吗？谢谢  #include <stdio.h> #include <string.h>  int main() {    char  string[]="{Temeprature=25.61,Humidity=15.62}";    char *p=string;    while(*p)printf("0x%02x ",*p++);//指针    printf("\n");    for(int len=0;len <sizeof(string); len++)//string 是数组，要传值使用string[下标]。      {        printf("0x%02X ",string[len]);      }    return 0; }  //输出： //0x7b 0x54 0x65 0x6d 0x65 0x70 0x72 0x61 0x74 0x75 0x72 0x65 0x3d 0x32 0x35 0x2e 0x36 0x31 0x2c 0x48 0x75 0x6d 0x69 0x64 0x69 0x74 0x79 0x3d 0x31 0x35 0x2e 0x36 0x32 0x7d //0x7B 0x54 0x65 0x6D 0x65 0x70 0x72 0x61 0x74 0x75 0x72 0x65 0x3D 0x32 0x35 0x2E 0x36 0x31 0x2C 0x48 0x75 0x6D 0x69 0x64 0x69 0x74 0x79 0x3D 0x31 0x35 0x2E 0x36 0x32 0x7D 0x00 请按任意键继续. . .非常感谢您。

user: user-0
content: 引用 3 楼 突触 的回复：你基础不是很牢。。  string 是数组，如果不带下标作为参数时，类似于指针    传递的是元素的首地址。 要传值使用string[下标]。  在讲讲printf     里面的 "%02X"       "%s"         "%d"     分别会把参数以不同的形式读取(作为指针，或直接是数据)    其中"%02X" ，"%d" 是数据形式读取， "%s" 是作为指针形式。   要实现的话可能就需要循环。 改正:  	char string[]= "{Temeprature=25.61,Humidity=15.62}"; 		 	for(int len=0;len <sizeof(string); len++) 	{ 		printf("0x%02X ",string[len]); 	}非常感谢。在下确实刚刚接触编程

user: user-1
content: 综合上面1# 2# 3# 楼的，供参考：//C中怎么把字符串用其ASCII hex形式打印出来  //比如char string[]=“{Temeprature=25.61,Humidity=15.62}”，用printf("%02X",string)输出出来是407A40， //其一，输出不完全，其二并不是{Temeprature=25.61,Humidity=15.62}的ASCII hex形式，{Temeprature=25.61,Humidity=15.62} //全部按ASCII hex转换应该是0x7b 0x54 0x65 0x6d 0x65 0x70 0x72 0x61 0x74 0x75 0x72 0x65 0x3d 0x32 0x35 0x2e 0x36 0x31 // 0x2c 0x48 0x75 0x6d 0x69 0x64 0x69 0x74 0x79 0x31 0x35 0x2e 0x36 0x32 0x7d， //目前在网上找到的历例程，对于{}、，，.这样的符号都没法转换，请问各位有能将字符串以其hex形式打印出来的例程吗？谢谢  #include <stdio.h> #include <string.h>  int main() {    char  string[]="{Temeprature=25.61,Humidity=15.62}";    char *p=string;    while(*p)printf("0x%02x ",*p++);//指针    printf("\n");    for(int len=0;len <sizeof(string); len++)//string 是数组，要传值使用string[下标]。      {        printf("0x%02X ",string[len]);      }    return 0; }  //输出： //0x7b 0x54 0x65 0x6d 0x65 0x70 0x72 0x61 0x74 0x75 0x72 0x65 0x3d 0x32 0x35 0x2e 0x36 0x31 0x2c 0x48 0x75 0x6d 0x69 0x64 0x69 0x74 0x79 0x3d 0x31 0x35 0x2e 0x36 0x32 0x7d //0x7B 0x54 0x65 0x6D 0x65 0x70 0x72 0x61 0x74 0x75 0x72 0x65 0x3D 0x32 0x35 0x2E 0x36 0x31 0x2C 0x48 0x75 0x6D 0x69 0x64 0x69 0x74 0x79 0x3D 0x31 0x35 0x2E 0x36 0x32 0x7D 0x00 请按任意键继续. . .

user: user-2
content: 你基础不是很牢。。  string 是数组，如果不带下标作为参数时，类似于指针    传递的是元素的首地址。 要传值使用string[下标]。  在讲讲printf     里面的 "%02X"       "%s"         "%d"     分别会把参数以不同的形式读取(作为指针，或直接是数据)    其中"%02X" ，"%d" 是数据形式读取， "%s" 是作为指针形式。   要实现的话可能就需要循环。 改正:  	char string[]= "{Temeprature=25.61,Humidity=15.62}"; 		 	for(int len=0;len <sizeof(string); len++) 	{ 		printf("0x%02X ",string[len]); 	}

user: user-3
content: char *p=string; while(*p)printf("0x%02x ",*p++);

user: user-4
content: 循环一个一个字符地打印