如何将以“\ 0”开头的char *转换为无符号整数? [关闭]

Posted

技术标签:

【中文标题】如何将以“\\ 0”开头的char *转换为无符号整数? [关闭]【英文标题】:How to convert a char * starting with "\0" to unsigned int? [closed]如何将以“\ 0”开头的char *转换为无符号整数? [关闭] 【发布时间】:2019-08-10 20:18:16 【问题描述】:

我有一个问题,我需要将字符串“\005”转换为无符号整数值 5。最好的方法是什么?

这是从 curl 响应中获取响应值。

int main()


    char *ptr = "\005";
    stringstream strValue;
    strValue << *ptr;

    unsigned int intValue;
    strValue >> intValue;

    cout << ptr << endl;
    cout << intValue << endl;

    return 0;

期望输出为 5 但得到

0

【问题讨论】:

这不是很明显吗? unsigned int n=*ptr;? 您是否有字符串\005(即首先带有实际反斜杠)或[NUL]05(即第一个字符是ASCII 0)字节? int intvalue = 5; 会做到的。要获得更有用的答案,您需要解释该字符串中每个字符的含义,即值是如何编码的?值 6 将如何编码? 10? 33? "这是从 curl 响应中获取响应值。" - 我知道“\005”是来自http响应的字符串。所以需要解析才能得到 5 您正在尝试将编码为数字 5 的(不可打印的)字符解释为数字。 (行为就像你写了char ptr[] = 5, 0;。) 【参考方案1】:

如何将“\0”开头的char *转换为unsigned int?

"\005"

字符串"\005" 不以字符'\0' 开头。它以字符 '\005' 开头,这是一个八进制转义序列,表示八进制数 005,十进制表示为 5。您可以像这样将字符转换为unsigned int 类型:

unsigned int n = ptr[0];

附: char *ptr = "\005" 自 C++11 以来格式错误,因为字符串文字不能隐式转换为指向 char 的非常量指针。

【讨论】:

以上是关于如何将以“\ 0”开头的char *转换为无符号整数? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

java如何将十六进制0xFF5100A5转换为无符号int值,貌似java不支持无符号数据?

char到int的转换

将浮点数转换为无符号短时的舍入问题

十进制字符串转化为无符号整数

如何在python中将有符号整数转换为无符号整数

如何将带有尾随x的数字字符串转换为无符号数字列表