使用 sprintf 将十六进制0xAABBCC转换为字符串"AA:BB:CC"
Convert hex 0xAABBCC to string "AA:BB:CC" using sprintf
我有一个十六进制数0xaabbcc
我想将其转换为字符字符串作为AA:BB:CC
。
在char myStr[] = "AABBCC";
中使用sprintf(myStr, %X, 0xaabbcc);
结果
是否可以使用sprintf
或其他功能将0xaabbcc
转换和格式化为AA:BB:CC
?
您需要用引号将说明符字符串括起来。printf
系列接收一个const char*
作为格式字符串。%x
单独在字符串之外意味着 x 的模数,如果之前没有整数,则会导致编译器错误%
就像您的情况一样
之后,只需拆分要打印的字节
unsigned v = 0xAABBCCU;
sprintf(myStr, "%02X:%02X:%02X", v >> 16, (v >> 8) & 0xFFU, v & 0xFFU); // or
sprintf(myStr, "%02X:%02X:%02X", v >> 16, (uint8_t)(v >> 8), (uint8_t)v);
但是,由于您使用的是C++因此使用 std::string 会更安全
std::stringstream myStr;
myStr << std::hex << std::setfill('0')
<< std::setw(2) << (v >> 16)
<< std::setw(2) << ((v >> 8) & 0xFFU)
<< std::setw(2) << (v & 0xFFU)
如果你想坚持使用printf
并且你正在使用GCC(或者可能是Clang,但我找不到任何记录(,那么你可以使用printf cusomization。
坦率地说,@phuclv的答案可能更好。
相关文章:
- 使用 sprintf 将十六进制0xAABBCC转换为字符串"AA:BB:CC"
- 我有一个AA树C 实现源代码,我需要将该代码放入Win32 C 中
- OpenCV Image Mat to 1D CHW(RR...R, GG..G, BB..B) vector
- 重叠分数在两个BB之间
- BB 10级联互联网检查
- 从C++代码发出 BB 级联按钮的"clicked()"信号
- 如何从 Cocos2D-x 应用程序为 BB Playbook/Z10 分享 Facebook 状态的分数
- 如何在BB 10级联中加载第二个.qml文件
- 为什么正则表达式"([a-z])((?!\1)[a-z])"匹配 C++11 中的字符串"aa"?
- 正则表达式( "(abc|aa.*|bb.*)" ) vs 正则表达式( "(aa.*|bb.*|cc.*)" );
- C/C++:A(*eval(A(*function)(B),Bb))(){..}可能吗??(可能在C++11之前)
- 在Cascades上创建一个带有背景图像的按钮,BB-10
- 单击BB 10 C++按钮