簡體   English   中英

如何將char更改為整數?

[英]How to change a char to an integer?

我想將char數組的內容復制到int變量或數組中。 例如,前五個值必須轉到int數組(int x):

char a[] = "123456";

我在其他線程中看到要將char更改為int,我需要這樣做:

int x = a[0] - '0';

還有其他方法嗎?

如果我想將兩個或兩個以上的值分組,例如12、34和56,該怎么辦?

如果我沒有將它們另存為整數,而是浮點數或其他類型的東西怎么辦?

將適當大小的字符串部分復制到單獨的緩沖區中,然后使用strtol()strtod()

您正在編寫軌道上,但是,如果要轉換為整數數組,則應使用類似

int x[MAX_ELEM];

for(int i =0; i<sizeof(a)/sizeof(char); i++)
{
   x[i] = a[i] -'0';
}

對於其他情況,您將需要單獨處理。

您必須執行int x = a[0] - '0'; 是因為C中的字符編碼。發生的是您正在從字符中減去編碼偏移量。 下表列出了所有編碼值: UTF-8編碼 所以int x = a[0] - '0'; 在您的情況下等於int x = 49 - 48; 具有您要尋找的正確值。 通過使用'0'而不是0您將使用char值0。

還有其他方法可以執行此操作,但是這種方法效果很好。 要使用其他類型,只需在創建int之后進行類型轉換。

約翰獲得兩位數字的方法效果很好。 重新張貼在這里,它是number = 10 * digit1 + digit2

要回答您的問題:

  • 當然,還有其他方法可以做到。 您所顯示的方式將ASCII值轉換為它代表的數字,但是還有其他方法。
  • 讀入所需的字符數,將每個字符轉換為數字,然后從這些數字構造整數,例如number = 10 * digit1 + digit2
  • 在構造整數之后,請進行類型轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM