1. 程式人生 > >關於int整數轉換儲存到字元陣列

關於int整數轉換儲存到字元陣列

  1. 我在CSDN上提了問,連結如下:
  1. 另外,在大端裝置上運行了下面的程式碼段:

編譯連結並執行的結果如下: 這裡整數 num 用 16進位制的形式表示的,其實它對應的十進位制數值為 305419896,snprintf 是將對應型別的數值轉換為字元陣列或字串。例如,這裡的 305429896 中的最高位 3 ,數值 3 對應的 ASCII 值為 0x33;數值 0 對應的 ASCII 值為 0x30;數值 5 對應的 ASCII 值為 0x35 如果 num 為負數,同樣的會轉換為字元,將 '-' 轉換為對應的 ASCII 碼
十進位制的1,2,3...... 對應的 ASCII 碼的 十六進位制表示

  1. 跟上面的 snprintf 函式功能類似的 memcpy 函式在裝置上執行下面的程式碼段:

編譯連結並執行後得到: 由於這裡的 memcpy 函式是將整型 num 在記憶體中的儲存直接拷貝,而裝置是大端的,所以從低地址到高地址位元組分別為 0x12,0x34,0x56,0x78,所以,使用 memcpy 函式拷貝後的結果如下
  1. 涉及到通訊的,建議不要用整型數直接傳輸,而是用字串,即建議使用第一種 snprintf 和 atoi 的聯合使用
  1. 整數 -1 的二進位制表示是四個位元組的1,對應的十六進位制為全F,即 0xFFFFFFFF ,負數在計算機中的儲存是用補碼(具體轉換,這裡不提)
  1. '\1' 和 '1' 表示的意義不同,'1' 表示字元 1,其對應的 ASCII 碼為 0x31;'\1' 表示 ASCII 碼為 1