我正在尝试从文件中读取十六进制值0x80表示的字符,然后在写入另一个文件时忽略该字符。但是,如果我使用简单的命令检查此字符,例如:
if(int(c1) == 0x80)
str += "";
该字符仍然最终写入字符串并最终写入我的文件。我做了一些研究,我认为它可能与签名/未签名字符和使用签名字符的Microsoft Visual C ++ 2008有关,将0x80置于界限之外。当我知道一个变量包含这个字符和mouseover时,我将断点插入到我的程序中时,它告诉我该字符的值为0.我现在确定这意味着什么,但是当我开始将它用作测试时{{1}它仍然最终将字符写入文件。奇怪的是,它在Notepad ++中显示为块字符0x80而不是欧元符号(当它未被捕获时它如何显示在输入和输出文件中。任何想法发生了什么?
答案 0 :(得分:1)
正如你猜测的那样,这可能是签署数字的延续。这可能有效:
if((int(c1) & 0xff)== 0x80)
str += "";