【问题标题】:Issue with reading a char in binary mode, ╡ [duplicate]以二进制模式读取字符的问题,╡ [重复]
【发布时间】:2014-05-07 15:11:04
【问题描述】:

我在从以 ios::binary 模式写入的文本文件中读取此字符时遇到问题。我使用符号unsigned char (181) 将其写入文件,但是当我尝试使用此行获取十进制值时

cout << text[i] << " " << (unsigned int)text[i] << " " << (int)text[i] << endl;

我把这个拿出来..

╡ 4294967221 -75

这似乎发生在我所有超过 127 的值上。并且该符号是与我使用的数字相对应的正确符号,但由于某种原因,当我尝试将其转换为 unsigned int 或 int 时,我得到了错误数字。我需要对 ascii 表中超过 127 的值做些什么特别的事情吗?

【问题讨论】:

    标签: c++ ascii


    【解决方案1】:

    先转换为unsigned char,然后再转换为int(或unsigned int)。显然,在您的系统上,普通的char 已签名,这意味着它采用[-128, 127] 范围内的值(通常假设为8 位char)。

    【讨论】:

    • 好的,是的,我只是这样做了,它奏效了。感谢那。我想这确实有道理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    • 2016-09-30
    • 2013-10-17
    • 2020-06-01
    • 2021-11-09
    • 2011-10-20
    • 1970-01-01
    相关资源
    最近更新 更多