找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 1738|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

專題二 2.C語(yǔ)言char類型與int類型的轉(zhuǎn)化

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:591424 發(fā)表于 2022-3-21 15:43 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
char和int的轉(zhuǎn)換有兩種方式,這兩種方式適合于在輸出時(shí)使用
最簡(jiǎn)單的方法就是利用ASSCII碼的差值,直接用char的值減去‘0’就行了
eg:char a = '9';int a_ = a-'0';另一個(gè)就是要利用c語(yǔ)言的庫(kù)函數(shù)來(lái)解決
附ASSCII編碼表
ASCII控制字符
[color=rgba(0, 0, 0, 0.75)]
二進(jìn)制十進(jìn)制十六進(jìn)制縮寫可以顯示的表示法名稱/意義
0000 0000000NUL空字符(Null)
0000 0001101SOH標(biāo)題開(kāi)始
0000 0010202STX本文開(kāi)始
0000 0011303ETX本文結(jié)束
0000 0100404EOT傳輸結(jié)束
0000 0101505ENQ請(qǐng)求
0000 0110606ACK確認(rèn)回應(yīng)
0000 0111707BEL響鈴
0000 1000808BS退格
0000 1001909HT水平定位符號(hào)
0000 1010100ALF換行鍵
0000 1011110BVT垂直定位符號(hào)
0000 1100120CFF換頁(yè)鍵
0000 1101130DCR歸位鍵
0000 1110140ESO取消變換(Shift out)
0000 1111150FSI啟用變換(Shift in)
0001 00001610DLE跳出數(shù)據(jù)通訊
0001 00011711DC1設(shè)備控制一(XON 啟用軟件速度控制)
0001 00101812DC2設(shè)備控制二
0001 00111913DC3設(shè)備控制三(XOFF 停用軟件速度控制)
0001 01002014DC4設(shè)備控制四
0001 01012115NAK確認(rèn)失敗回應(yīng)
0001 01102216SYN同步用暫停
0001 01112317ETB區(qū)塊傳輸結(jié)束
0001 10002418CAN取消
0001 10012519EM連接介質(zhì)中斷
0001 1010261ASUB替換
0001 1011271BESC跳出
0001 1100281CFS文件分割符
0001 1101291DGS組群分隔符
0001 1110301ERS記錄分隔符
0001 1111311FUS單元分隔符
0111 11111277FDEL刪除


ASCII可顯示字符[color=rgba(0, 0, 0, 0.75)][td]
二進(jìn)制十進(jìn)制十六進(jìn)制圖形
0010 00003220(空格)(␠)
0010 00013321!
0010 00103422"
0010 00113523#
0010 01003624$
0010 01013725%
0010 01103826&
0010 01113927
0010 10004028(
0010 10014129)
0010 1010422A*
0010 1011432B+
0010 1100442C,
0010 1101452D-
0010 1110462E.
0010 1111472F/
0011 000048300
0011 000149311
0011 001050322
0011 001151333
0011 010052344
0011 010153355
0011 011054366
0011 011155377
0011 100056388
0011 100157399
0011 1010583A:
0011 1011593B;
0011 1100603C<
0011 1101613D=
0011 1110623E>
0011 1111633F?
0100 00006440@
0100 00016541A
0100 00106642B
0100 00116743C
0100 01006844D
0100 01016945E
0100 01107046F
0100 01117147G
0100 10007248H
0100 10017349I
0100 1010744AJ
0100 1011754BK
0100 1100764CL
0100 1101774DM
0100 1110784EN
0100 1111794FO
0101 00008050P
0101 00018151Q
0101 00108252R
0101 00118353S
0101 01008454T
0101 01018555U
0101 01108656V
0101 01118757W
0101 10008858X
0101 10018959Y
0101 1010905AZ
0101 1011915B[
0101 1100925C\
0101 1101935D]
0101 1110945E^
0101 1111955F_
0110 00009660`
0110 00019761a
0110 00109862b
0110 00119963c
0110 010010064d
0110 010110165e
0110 011010266f
0110 011110367g
0110 100010468h
0110 100110569i
0110 10101066Aj
0110 10111076Bk
0110 11001086Cl
0110 11011096Dm
0110 11101106En
0110 11111116Fo
0111 000011270p
0111 000111371q
0111 001011472r
0111 001111573s
0111 010011674t
0111 010111775u
0111 011011876v
0111 011111977w
0111 100012078x
0111 100112179y
0111 10101227Az
0111 10111237B{
0111 11001247C|
0111 11011257D}
0111 11101267E~


(1)字符串轉(zhuǎn)換成數(shù)字,用atoi,atol,atof,分別對(duì)應(yīng)的是整型,long型,double


char str[]="1234";
int a=atoi(str);


(2)數(shù)字換成字符串,用sprintf
char str[10];
int a=1234;
sprintf(str,"%d",a);

itoa  
功 能:把一整數(shù)轉(zhuǎn)換為字符串
用 法:char *itoa(int value, char *string, int radix);
詳細(xì)解釋:itoa是英文integer to array(將int整型數(shù)轉(zhuǎn)化為一個(gè)字符串,并將值保存在數(shù)組string中)的縮寫.

參數(shù):
  value: 待轉(zhuǎn)化的整數(shù)。
  radix: 是基數(shù)的意思,即先將value轉(zhuǎn)化為radix進(jìn)制的數(shù),范圍介于2-36,比如10表示10進(jìn)制,16表示16進(jìn)制。
  * string: 保存轉(zhuǎn)換后得到的字符串。
  返回值:
  char * : 指向生成的字符串, 同*string。

  備注:該函數(shù)的頭文件是"stdlib.h"



  1.      <font face="微軟雅黑" size="1">#include <stdlib.h>
  2.   #include <stdio.h>
  3.   int main()
  4.   {</font>
復(fù)制代碼

atoi 
  功 能: 把字符串轉(zhuǎn)換成整型數(shù),可以將一個(gè)字符數(shù)組轉(zhuǎn)化為整型
  函數(shù)說(shuō)明: atoi()會(huì)掃描參數(shù)nptr字符串,檢測(cè)到第一個(gè)數(shù)字或正負(fù)符號(hào)時(shí)開(kāi)始做類型轉(zhuǎn)換,之后檢測(cè)到非數(shù)字或結(jié)束符 \0 時(shí)停止轉(zhuǎn)換,返回整型數(shù)。
  原型: int atoi(const char *nptr);
  需要用到的頭文件: #include <stdlib.h>

  1.   #include <stdlib.h>
  2.   #include <stdio.h>
  3.   int main(void)
  4.   {
  5.   int n;
  6.   char *str = "12345.67";
  7.   n = atoi(str);
  8.   printf("string = %s integer = %d\n", str, n);
  9.   return 0;
  10.   }
  11.   執(zhí)行結(jié)果
  12.   string = 12345.67 integer = 12345
復(fù)制代碼


附:C語(yǔ)言 單引號(hào)和雙引號(hào)的區(qū)別

1、含義不同。

用單引號(hào)引起的一個(gè)字符實(shí)際上代表一個(gè)整數(shù),整數(shù)值對(duì)應(yīng)于該字符在編譯器采用的字符集中的序列值。而一般我們的編譯器采用的都是ASCII字符集。因此's'的含義其實(shí)和十進(jìn)制數(shù)115的含義是一致的。

而用雙引號(hào)引起的字符串,代表的是一個(gè)指向無(wú)名數(shù)組起始字符的指針。

2、大小不同。

用單引號(hào)引起的一個(gè)字符大小就是一個(gè)字節(jié)。

而用雙引號(hào)引起的字符串大小是字符的總大小+1,因?yàn)橛秒p引號(hào)引起的字符串會(huì)在字符串末尾添加一個(gè)二進(jìn)制為0的字符'\0'。


數(shù)組的輸入:

int h[10] = {1,2,3};
for (int m=0; m<4; m++)
{undefined
  scanf("%d", &h[m]);
}
printf("%d\n", h[0]);


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表