[问题] 串行收到的16进制直接转成字串

楼主: smvenjoy (好好坏坏~~)   2018-11-11 10:45:57
开发平台(Platform): (Ex: Win10, Linux, ...)
win7
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
VC++
问题(Question):
假设欲将收到4个封包的数值,直接转成字串格式,
如下:
char c[4];
c[0] = 0x11;
c[1] = 0x22;
c[2] = 0x33;
c[3] = 0x44;
想要得到一字串,输出结果为
data="11223344"
想请问这样可以使用什么函式直接转出来吗?
谢谢!
作者: kokal (细菌)   2018-11-11 11:24:00
sprintf和%xbuffer记得要留'\0'的空间
楼主: smvenjoy (好好坏坏~~)   2018-11-11 11:32:00
有试过,但转出来不是我想要的char data[9];sprintf((char*) &data[0],"%x", &(c[0]))印出data的结果并不对耶
作者: idiont (supertroller)   2018-11-11 11:45:00
你要的是c[0]的值 不是内存位址 不用加&
作者: PkmX (阿猫)   2018-11-11 13:17:00
Endianness
作者: kokal (细菌)   2018-11-11 17:34:00
sprintf(buf, "%x%x%x%x", c[0], c[1], c[2], c[3]);
楼主: smvenjoy (好好坏坏~~)   2018-11-11 23:19:00
谢谢教导,已解决
作者: japing (上进心)   2018-11-15 09:48:00
原来可以这样做XDDD

Links booklink

Contact Us: admin [ a t ] ucptt.com