将表示二进制的字符串转换为表示等效十六进制的字符串
所以我有一个字符串x =“10101”,我需要将x中二进制的十六进制值放入任何字符串y中。因此,如果 x="10101"
则 y="0x15"
So i have a string x = "10101" and i need to put into any string y the hex value of the binary in x. So if x="10101"
then y="0x15"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
最简单的方法是使用 [bitset][1]:
但我读到这不是最有效的方法......取决于你想要什么。请记住,过早的优化是万恶之源。
The simplest way to do this is using a [bitset][1]:
But I read that it's not the most efficient way... Depends on what you whant. Remember that premature optimisation is the root of all evil.
您可能应该使用
strtol
( http://en.wikipedia.org/wiki/ Strtol ) 函数以 2 为底,将 x 转换为整数,然后使用 sprintf 格式化结果字符串。You should probably use
strtol
( http://en.wikipedia.org/wiki/Strtol ) function with the base 2 to convert x to the integer and then usesprintf
to format the result string.我不想向您提供完整的答案。
也就是说,基本思想应该是在字符串的开头填充最多 3 个零,以便可以将字符串拆分为长度为 4 的子字符串。
然后可以通过多种方式轻松地将其转换为十六进制,最简单的方法是使用 switch case 语句。只会有16个案例
I don't want to provide you with the complete answer.
That said, the basic idea should be fill the start of the string with up to 3 zero's so that you can split the string into substrings with a length of 4.
This can then easily be turned into hex by a variety of ways, the easiest being just using a switch case statement. There would only be 16 cases'