c语言char型字符串转换成int型字符串 c语言中,怎样把内容为数字的char转换为int?

C\u8bed\u8a00 \u5982\u4f55\u5c06char \u5355\u5b57\u7b26\u578b\u8f6c\u6210int\u578b???

int
a='key'-'0'
\u5c06char
\u5b57\u7b26\u8f6c\u6362\u4e3a
ASCII\u7801
\u51cf\u53bb0\u7684
ASCII\u7801
\u5b83\u4eec\u7684\u5dee\u503c\u5c31\u662fint
\u578b\u7684\u6570\u503c

\u5185\u5bb9\u4e3a\u6570\u5b57\u7684char\uff0c\u5305\u542b
0,1,2,3,4,5,6,7,8,9
\u5171\u8ba110\u4e2a\u5b57\u7b26\u3002
\u8fd9\u5341\u4e2a\u5b57\u7b26\u5728\u5b58\u4e3a\u5b57\u7b26\u578b\u65f6\uff0c\u5176\u5b58\u50a8\u503c\u4e3a\u5bf9\u5e94\u7684ascii\u7801\uff0c\u800c\u8fd9\u4e9bascii\u7801\u662f\u8fde\u7eed\u7684\uff0c\u4e14\u6309\u7167\u5176\u672c\u8eab\u6570\u5b57\u7684\u5927\u5c0f\u6765\u6392\u5217\u3002
\u8fd9\u6837\u5c31\u53ef\u4ee5\u5c06\u5b57\u7b26\u503c\uff0c\u51cf\u53bb\u8d77\u59cbascii\u7801\u503c\u5b9e\u73b0\u8f6c\u4e3a\u5bf9\u5e94\u503c\u7684\u6548\u679c\u3002
\u8bbe
int a; //\u8f6c\u6362\u7684\u76ee\u6807\u53d8\u91cf\u3002
char c = '7'; //\u8981\u8f6c\u6362\u7684\u5b57\u7b26\u3002
c = a - '0';
\u8fd9\u6837\u5f97\u5230\u7684\u5c31\u662f\u5bf9\u5e94\u7684\u503c\u4e86\uff0c\u5373c = 7\u3002
\u5982\u679c\u5728\u6587\u4ef6\u4e2d\u9700\u8981\u591a\u6b21\u8be5\u64cd\u4f5c\uff0c\u5219\u53ef\u4ee5\u5b9a\u4e49\u4e00\u4e2a\u5e26\u53c2\u5b8f\uff0c\u5982\u4e0b\uff1a
#define chartonumber(x) (x-'0')
\u8fd9\u6837\u53ea\u9700\u8981\u8c03\u7528
c = chartonumber(a);
\u5373\u53ef\u5b9e\u73b0\u6548\u679c\u3002

1、把char型转换成int类型。

for(int i=0;i<str.length();i++)

{

char temp_char=str.charAt(i);

//把字符转换成数字方法一

int temp_int=temp_char-'0';

//把字符转换成数字方法二

int temp_int=Integer.parseInt(String.valueOf(temp_char));

}

第一种办法:通过charAt(i),把字符串的每位变成char型,然后用当前字符减去字符0(temp_char-'0'),得到当前字符的int值。

第二种办法:把字符再转成字符串,然后再强制转换成int型。

2、把字符串拆分成一位一位的

第一种方法:循环后charAt(i);

注意:charAt(i)得到的是字符串对应的每位字符,可是不能直接转成int,转成int依然是ASCII值。

第二种方法:char[]temp=str.toCharArray();

注意:char[]里的内容不是字符串的每位字符,而是每位字符的ASCII值。

具体如下:

package cjl;

import java.util.Scanner;

/**

一维码有一种编码是ean13,是一串13位数字。其中第13位是校验码,作用是校验前面12个数字是否正确。

校验方法如下:

1、前12位数字从左起,将所有的奇数位相加得出一个数a,将所有的偶数位相加得出一个数b

2、将数b乘以3再与a相加得到数c

3、用10减去数c的个位数,如果结果不为10则校验码为结果本身,如果为10则校验码为0

请在控制台任意输入一个12位数字,然后输出校验码

author ff

/

public class CheckCode{

public void checkCode(String str)

{

int checkCode=0;

int a=0;//奇数位的和

int b=0;//偶数位的和

for(int i=0;i<str.length();i++)

{

char temp_char=str.charAt(i);

//把字符转换成数字方法一

int temp_int=temp_char-'0';

//把字符转换成数字方法二

//int temp_int=Integer.parseInt(String.valueOf(temp_char));

//System.out.println("temp_char="+temp_char);

//System.out.println("temp__int="+temp_int);

if((i+1)%2==0)//偶数位

{

b+=(int)temp_int;

}

else//奇数位

{

a=a+(int)temp_int;

}

}

int c=a+b*3;

int c_gw=c%10;

int d=10-c_gw;

//System.out.println("a="+a+"b="+b+"c="+c+"c_gw="+c_gw+"d="+d);

if(d==10)

{

checkCode=0;

}

else

{

checkCode=d;

}

System.out.println("checkCode="+checkCode);

}

public void Input()

{

while(true){

Scanner scanner=new Scanner(System.in);

System.out.println("请输入一个12位的数字。。。。。。");

String str=scanner.nextLine();

if((str.length()==12)&&(str.matches("[0-9]+")))

{

checkCode(str);

break;

}

}

}

/**

param args

/

public static void main(String[]args){

CheckCode codeVo=new CheckCode();

codeVo.Input();

}

}

运行结果:

请输入一个12位的数字。。。。。。

111111111111

checkCode=6

扩展资料:

char是计算机编程语言(c、c++、java、VFP等)中可容纳单个字符的一种基本数据类型。

char是一个数据类型,作用是定义字符型变量(单个或是字符串)。

比方int是整形数据,int a=3;这里int是类型,a是整型变量,3是赋值;

char s='A';char是字符类型,s是字符型变量,A是赋值给变量s;

char s[]="c program";char是字符类型,s[]是字符型数组,"c program"是赋给数组的值。



char是字符类型,你想让他已int类型输出,只会输出他的ASCII

就是用int类型存放char型的ASCII码。例如你说的char buf[128]="abc";int abc[128];

for(i=0;buf[i]!='\0';i++)
abc[i]=buf[i]-NULL;

  可以使用强制类型转换,示例代码如下:

char buf[]="abc";
int tmp = *(int*)buf;
printf("%s",(char*)&tmp);//输出看看字符串有没有丢失或错误

  但是这样转换有一个限制,就是只能对不超过4个字节的字符串进行转换

  因为int类型默认都是4个字节,只能放入4个字符

  如果需要大批量的转换,则需要用memcpy,示例代码如下:

char buf[]="abc123";
int tmp[2];//6个字符串需要2个int来保存
memcpy(tmp,buf,strlen(buf)+1);
printf("%s",(char*)tmp);//输出看看字符串有没有丢失或错误

  但是这样并没有什么优势,字节在内存中占用的大小并没有变化



你想用一个数字来储存 字符串么??
用ASCII码,每个字符本身都是一个数字,例如 buf[0] = 'a';
'a'在ASCII码表中代表的数字是97,以此类推,任何字符都可以表示出来,包括中文

  • c璇█char鍨嬪瓧绗︿覆杞崲鎴恑nt鍨嬪瓧绗︿覆
    绛旓細绗竴绉嶅姙娉曪細閫氳繃charAt(i)锛屾妸瀛楃涓茬殑姣忎綅鍙樻垚char鍨嬶紝鐒跺悗鐢ㄥ綋鍓嶅瓧绗﹀噺鍘诲瓧绗0锛坱emp_char-'0'锛夛紝寰楀埌褰撳墠瀛楃鐨刬nt鍊笺傜浜岀鍔炴硶锛氭妸瀛楃鍐嶈浆鎴愬瓧绗︿覆锛岀劧鍚庡啀寮哄埗杞崲鎴恑nt鍨嬨2銆佹妸瀛楃涓叉媶鍒嗘垚涓浣嶄竴浣嶇殑 绗竴绉嶆柟娉曪細寰幆鍚巆harAt(i)锛涙敞鎰忥細charAt(i)寰楀埌鐨勬槸瀛楃涓插搴旂殑姣忎綅瀛楃锛...
  • 鎬庝箞鎶char杞垚int
    绛旓細char杞垚int鐨勬柟娉曪細C璇█涓璫har绫诲瀷鏈韩灏辨槸鏁村瀷绫绘暟鎹彉閲忥紝鍙互鐩存帴璧嬪肩粰int鍙橀噺銆俢har鍗犱竴涓瓧鑺傚唴瀛樼┖闂达紝鍙〃绀虹殑鏈夌鍙锋暟涓-128~127锛屾棤绗﹀彿鏁0~255銆侰璇█涓瓧绗︽槸鎸夊叾ascii鍊艰繘琛屽瓨鍌ㄧ殑锛屽锛屽瓧姣嶁榓鈥欙紝鍏跺疄闄呭瓨鍌ㄥ湪鍐呭瓨涓殑鏁版嵁涓97锛屽彧鏄湪杈撳嚭鏃讹紝鍥犳牸寮忎覆鐨勪笉鍚岋紝琛ㄧ幇鍑烘潵鐨勫舰寮忎笉鍚...
  • C璇█ 濡備綍灏char 鍗瀛楃鍨嬭浆鎴恑nt鍨???
    绛旓細char a='1';char base='0';int i = (int)a - (int)base;//鍙互绠鍗曠偣鍐欎竴涓畯#define ATOI(X) ( (X) - 30)鍘熺悊灏辨槸瀛楃鍨瀹為檯鏄瓨鍌ㄧ殑鏁存暟锛屽叿浣撴暟鍊煎彲鏌SCII琛紝鑰屾暟瀛0-9鐨凙SCII鏄浉閭荤殑锛屾暟瀛楀瓧绗﹂氳繃鍑忓幓鍩虹鐨'0'鐨凙SCII鐮佸硷紝灏辫兘寰楀埌瀵瑰簲鐨勫瓧绗︿唬琛ㄧ殑瀹為檯鏁板瓧锛岀劧鍚庤祴鍊肩粰鍏...
  • c璇█鎶char杞崲鎴恑nt
    绛旓細long long atoq(const char *nptr);
  • c璇█涓,鎬庢牱鎶婂唴瀹逛负鏁板瓧鐨char杞崲涓篿nt?
    绛旓細璁 int a; //杞崲鐨勭洰鏍囧彉閲忋char c = '7'; //瑕佽浆鎹㈢殑瀛楃銆俢 = a - '0';杩欐牱寰楀埌鐨勫氨鏄搴旂殑鍊间簡锛屽嵆c = 7銆傚鏋滃湪鏂囦欢涓渶瑕佸娆¤鎿嶄綔锛屽垯鍙互瀹氫箟涓涓甫鍙傚畯锛屽涓嬶細define chartonumber(x) (x-'0')杩欐牱鍙渶瑕佽皟鐢 c = chartonumber(a);鍗冲彲瀹炵幇鏁堟灉銆
  • C璇█ 濡備綍灏瀛楃涓茶浆鎹㈡垚鏁板瓧銆備笉鐢ㄦ寚閽堝拰鍑芥暟搴,姹傝В绛
    绛旓細C璇█ 閲屽瓧绗 鏄敤 ascii 鐮佸寮忓瓨鏀剧殑 姣斿 '0'鐨凙SCII 鐮佹槸48锛屽鏋滀竴涓瀛楃ch鏄暟瀛楋紝閭d箞,ch-'0' 鐨勫 灏辨槸 ch浠h〃鏁板瓧鐨勫 鍥犳 浜嬪厛 瑕佸垽鏂竴涓 姣斿 if (ch >= '0' && ch <='9') digi=ch -'0'
  • C璇█char绫诲瀷鐨123鎬庝箞杞崲鎴 int绫诲瀷鐨123?
    绛旓細char a锛沬nt b锛沘=SBUF锛//鍋囧鎺ユ敹鍒扮殑a鐨勫兼槸123(涔熷氨鏄痑="123")鎵璋揳="123"锛岃繖鏄笉鍙兘鐨勶紙杩欎釜瀛楃涓闇瑕4涓瓧鑺傛墠鑳戒繚瀛橈紝鑰宎鍙湁涓涓瓧鑺傦級銆傚鏋滄槸char a;a=123;鍒檃涓繚瀛樼殑鏄竴涓瓧绗︾殑ASCII鍊硷紝鍗砤鐨勫兼槸涓涓瓧绗︼紙涔熷氨鏄瓧绗'{'锛夈傚鏋滄兂瑕佽瀹杞崲涓篿nt鍨嬬殑123锛屾槸闈炲父...
  • c璇█ 瀛楃鍨嬭浆鎹㈡垚鏁村瀷
    绛旓細瀛楃涓茶浆鎴鏁村瀷鍙互浣跨敤atoi鍑芥暟銆傚嚱鏁板師鍨嬶細int atoi(const char *nptr);鍔熻兘锛氭妸瀛楃涓茶浆鎹㈡垚鏁村瀷鏁般傚弬鏁皀ptr瀛楃涓诧紝濡傛灉绗竴涓潪绌烘牸瀛楃瀛樺湪锛屾槸鏁板瓧鎴栬呮璐熷彿鍒欏紑濮嬪仛绫诲瀷杞崲锛屼箣鍚庢娴嬪埌闈炴暟瀛(鍖呮嫭缁撴潫绗 \0) 瀛楃鏃跺仠姝㈣浆鎹紝杩斿洖鏁村瀷鏁般傚惁鍒欙紝杩斿洖闆躲
  • C璇█濡備綍鎶婁竴涓瀛楃涓茶浆鎹㈡垚鏁板瓧
    绛旓細C璇█涓紝鍙互浣跨敤atoi鍑芥暟灏瀛楃涓茶浆鎹负鏁板瓧锛屽atoi("123")鍙互寰楀埌鏁板瓧123銆俛toi (琛ㄧず ascii to integer)鏄妸瀛楃涓茶浆鎹㈡垚鏁村瀷鏁扮殑涓涓嚱鏁帮紝搴旂敤鍦ㄨ绠楁満绋嬪簭鍜屽姙鍏蒋浠朵腑銆俰nt atoi(const char *nptr) 鍑芥暟浼氭壂鎻忓弬鏁 nptr瀛楃涓诧紝浼氳烦杩囧墠闈㈢殑绌虹櫧瀛楃锛堜緥濡傜┖鏍硷紝tab缂╄繘锛夌瓑銆傚鏋 nptr涓嶈兘...
  • C璇█涓,瀛楃涓鎬庝箞杞崲涓篿nt鏁扮粍?
    绛旓細include<stdio.h>#include<math.h>#include<string.h>#include<conio.h>void main(){ int exc_n(char ch[]);int pnum=0; do{//濂楃敤浜嗘垜涔嬪墠鍐欑殑涓涓杞崲鍑芥暟锛岃緭鍑烘湁鐐瑰媺寮恒傘傘(鍥哄畾杈撳嚭澶0x0...) char ch[10]={0};char spr[2]={0};//鍒嗛殧杈撳叆 printf("input the string ...
  • 扩展阅读:c语言怎么输入字符串 ... c语言char使用实例 ... c语言char字符型输出 ... char字符对照表 ... c语言char怎么用 ... char可以表示字符串吗 ... c语言getchar处理字符串 ... c++char字符串拼接 ... 在c语言中假设字符串char s20 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网