char型陣列轉換為Int 指標的規範使用)

2021-07-24 13:58:41 字數 990 閱讀 3369

最近在寫乙個讀取檔案,得到裡面儲存的事例,進行解壓縮然後轉換進行存檔的工作,檔案中儲存event的順序如下:

可以看到資料的長度都存到了m_datasize的這四個位元組裡,因此如果要讀到之後資料的內容,那麼就需要首先讀到m_datasize裡的內容,剛開始我是這樣做的

char * event_head = new event_head [8];

uint32_t    *m_trig;

uint32_t    *m_datasize;

m_trig = (uint32_t*) event_head;

m_datasize = m_trig +1;

這樣做就是想強制把不同型別的指標進行強制轉換,但是這樣做其實有風險,有時候會導致指標指向的區域不確定,由此帶來意向不到的結果。

所以應該盡量避免這樣的做法。

所以我採用了以下的方法,雖然看上去比較繁瑣和麻煩,但是相對來說比較安全,但在這裡又涉及到了記憶體儲存大小端的問題。

一般來說x86結構的計算機使用的都是小端模式,因此這裡的轉換應該用小端模式來進行考慮

char *event_head = new char[8]

uint32_t  m_trig

uint32_t  m_datasize

m_trig = (uint8_t)event_head[0] + (uint8_t)event_head[1]*256 + (uint8_t)event_head[2]*65536 + (uint8_t)event_head[3]+16777216

m_datasize = (uint8_t)event_head[4] + (uint8_t)event_head[5]*256 + (uint8_t)event_head[6]*65536 + (uint8_t)event_head[7]+16777216

這樣就可以得到真實的資料的大小了

把int轉換為char把int轉換為char

char ultoa unsigned long value,char string,int radix 將無符號整型數value轉換成字串並返回該字串,radix為轉換時所用基數 char ltoa long value,char string,int radix 將長整型數value轉換成字串並...

string型別陣列轉換為int型

方法一 定義轉換方法 public static int strtoint string str string arrs new string int arri array.convertall arrs,new converter strtoint 方法二 string str1 new stri...

char 型陣列Int型互轉

include include typedefunsignedcharuchar typedefunsignedintuint 轉換函式 temp 字元型陣列 pout int型陣列 length 字元型陣列的長度 這裡假設字元型陣列裡包含的都是偶數個元素 如果是奇數個數,則需要增加如下處理 檢查l...