char到十六进制,具有相同的字节大小C ++

时间:2015-09-28 02:03:19

标签: c++

func isNumber(text:String)->Bool
{
    if let intVal = text.toInt()
        {return true}
    else
        {return false}
}

出于某种原因,这会打印出var str:String="11.5" if(isNumber(str)) {println("yes")} else {println("no")} //prints "no" 的字符形式,而不是int main () { char k = 0xd8; cout << hex << k << endl; } 的十六进制形式。执行k会给我d8这不是我想要的那个。

1 个答案:

答案 0 :(得分:3)

这只是C++中的众多缺陷之一,也是我坚持C的另一个原因。您可以在下面提供的参考资料中阅读有关该主题的更多信息。为了省去一些麻烦,请考虑使用生产代码中的printf()系列函数,因为修复程序不能保证符合标准。

代码清单

#include <iostream>
using namespace std;

int main(void)
{
    unsigned char k = 0xd8;
    cout << "k = 0x" << hex << +k << endl;
}

示例输出

k = 0xd8

<强>参考

  1. 代码评论:Stack Overflow海报无法打印字符的数值http://cpp.indi.frih.net/blog/2014/08/code-critique-stack-overflow-posters-cant-print-the-numeric-value-of-a-char/显式C ++ ,访问次数2015-09-27
  2. 提示:打印字符的数值(和(u)int8_t),http://cpp.indi.frih.net/blog/2014/09/tippet-printing-numeric-values-for-chars-and-uint8_t/显式C ++ ,已访问2015-09-27