讀取檔案中 1 的問題,要用int型別。

2022-05-13 19:45:19 字數 944 閱讀 2527

char型別

棧空間,遇到-1結束迴圈。

int型別則遇到-1不會結束迴圈。

4個位元組的int。

每個漢字由兩個負數組成。

對映過去後,-68變成了:256-68=188。

int型別讀過去變成了正數。

讀到-1,不過是255,0xff。

0xff是8個1,不會退出迴圈,32個1,全是ff才退出迴圈。

char型別才是8個1,就結束讀取迴圈。

漢字的編碼問題:

漢字的asc值為什麼會是負數 - 程式人生,學海無涯 - csdn部落格

漢字存放在計算機中,稱為:機內碼。

它和ascii碼,是有根本區別的。

ascii碼是用來存放阿拉伯數字、英文、符號等等,和漢字,沒有一丁點關係。

「中」的機內碼是 d6d0。

d6d0,當成有符號數,寫成十進位制數字就是-10544;

d6d0,當成無符號數,寫成十進位制數字就是 54992。

英文標準的ascii碼中只有128個符號,只需要7位,但是計算機分配儲存的最基本單位是位元組,至少是8位,因此最高位為0;

因此常見的西文符號的ascii都是在0-127之間,無論是有符號還是無符號去觀察它們,都是正的。

中文的符號遠超過256個,因此用乙個位元組不能儲存漢字,早期的gb2312採用了兩個位元組。

但是很麻煩的問題是乙個漢字用兩個位元組儲存在計算機中後,和兩個西文字母的ascii混淆,為了避免這個混淆,漢字兩個位元組的最高位都是1。

如果用有符號的數去讀取乙個漢字的內容,最高位的1正好和負號位置相同,因此此時就會發現漢字的內嗎是負的。

MPICH 中讀取檔案的問題

用mpi i o讀取檔案時,讀出的數字不正確。為了驗證錯誤,寫了乙個簡單程式。想要讀取的資料 feifei.dat 2 3 4 5 6 讀檔案的程式 include include include mpi.h using namespace std int main int argc,char ar...

C 中讀取Excel檔案的類封裝

總是感覺對於c 中讀取excel檔案是非常麻煩,還是決定自己來封裝乙個基於com介面的類解決這個問題。整體設計以及實現如下 首先 入對於microsoft.csharp以及office object library excel object library 譬如12.0版本的引用 public se...

讀取檔案的操作1

今天的工作把乙個excel 用c 儲存進記憶體,並取出最大值.excel 有20個sheet,每個sheet表示一行,每個sheet內又有很多列,乙個sheet內最多有20行。我需要將每行的每列的最大值求出來取出。程式如下 include include include include includ...