C++字符串转换ASCII的问题 10C

读取一串字母,并截取最后一位字母,然后取得该字母的ASCII码。我试着把读到的字符串最后的字母赋给一个char*变量A
然后再通过强制转换(int)A[0]来得到该字母的ASCII码。但是会有段错误(核心已转储)这个报错。求大神指点

10个回答

字符串转换为ascii值的函数 https://download.csdn.net/download/jdper/6684625

假设A为你所说的字母,int a=(int)A就行了,(int)为强制转换类型,字母转化过来就是对应的ASCII码了,cout>>a,就可以输出ASCII码了

phenix2009
白色一大坨 回复Desol: 老兄,我弄好了你看一下代码
一年多之前 回复
Desol
Desol 我是cin一个字符串然后截取它的最后一位,截取到的这个字母依然是string类型的,可是强制转换不是只能用于char类型的字符码?
一年多之前 回复

你提到“我试着把读到的字符串最后的字母赋给一个char*变量A”,具体代码是如何实现的,按道理来说字符串最后一个字母不能直接赋值给一个char*,如下
char* A;
A = &str[sz];
int a = (int)A[0];
这样就可以得到最后一个字母的ASCII值。

我们可以用String类的substring(int from,int to)方法去截字符串位置为from到to-1位置的字符

如下;String str="1234:22:23";int i=str.lastIndexOf(":");
搜索

不知是不是这个意思,请看代码:

    char str[85];
    printf("请输入一个表达式\n");
    scanf("%s", str);//中序输入表达式 
    int len = strlen(str);
    printf("字符串最后一位ASCII码为:0x%02X", str[len - 1]);

char*的变量指向的是地址, 如果你的指针, 没有分配一个空间, 而把ascii赋值给没有分配空间的地址, 如果这个地址指向的不是合法地址, 会崩溃是很正常的是, 你的方法不在正确, 为什么要这么用呢

首先要判断是否读到最后一位字符,建议你打印尝试一下,第二如果是,不建议i使用强制转换,可以进行减去字符的加减运算,可以得到你想要的int形,

如果是string类型,那么是这样的代码:

    string str;
    printf("请输入一个字符串\n");
    cin >> str;
    int len = str.length();
    printf("字符串最后一位ASCII码为:0x%02X", str[len - 1]);

试一下这样转
int * stringtoAsc(string s)

{

int *a = (int *)malloc(sizeof(int)*s.length()+1);

for (size_t i = 0; i < s.length()+1; i++)

{

a[i] = s[i];

cout << s[i]<<' '<<a[i]<<' ';

int2binary(a[i]);

cout << ' ';

printf("%x", a[i]);

cout << endl;

}  
cout << endl;  
return a;  

}

1、段错误是你指针的用法不对
2、以后提问帖代码,光这样问谁知道你代码错在哪
3、 这样可以满足你提的功能
QString str="abcde";
char a[10];
QByteArray b=str.mid(str.length()-1,1).toAscii();
strcpy(a,b.data());
qDebug("%d",a[0]);

qq_38319117
_肆 抱歉用QT写的,不知道你用的啥编译软件,VS的话可以用T2A()函数把CString转成char*
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
ASCII字符串转换问题
有一个中文字符串被转换为ASCII字符串STR,一个字被拆成两个字符rn那么如何将这个ASCII字符串还原回中文字符串呢rn用下面的方法还原出来的字符都是??显示,怎么办呢rn[code=Java]rnpublic final String readAsciiString(int n) rn char ret[] = new char[n];rn for (int x = 0; x < n; x++) rn ret[x] = (char) readByte();rn rn return String.valueOf(ret);rn rn[/code]
一串ASCII字符串转换问题
我的StringGrid1中有一串ASCII码组成的字符串,我想转换层字符输出,不知道我的代码哪里错了rnvarrn E1,E2:string;rn i:byte;rn[code=Delphi(Pascal)]rn e2:=StringGrid1.Cells[5,57] ;rn E1:='';rn for i := 0 to 11 dorn beginrn E1:= chr(StrToInt(Copy(E2,1+i*2,2)))+E1;rn StringGrid1.Cells[1,1]:=E1rn[/code]rn
Java字符串转换为ASCII
Java字符串转换为ASCII 1,将输入的字符串转换为ASCII 2,源代码 package com.java.demo; //Convert String to ASCII public class Test2 { public static void ConvertToASCII(String string) { StringBuilder sb = new Str
C# 字符串转换ASCII
[code=&quot;C#&quot;] /// /// 字符串转Ascii /// /// /// private string StringToAscii(string s) { string ascii = &quot;&quot;; f...
字符串转换为Ascii码
实现将字符串转换为ASCII码的详细代码
字符串转换为ASCII?
如何将一个字符串的内容转换为ASCII吗存在一个数组中。
字符串转换为ASCII(C#)
字符串转换为ASCII,源代码 运用C#实现
字符串转换ASCII值
字符串转换ASCII值的不过只支持一个字幕如果需要连贯的需要自己改
字符串转换为ascii值的函数
字符串转换为ascii值,转换值是一个各单独值相加后的结果
ASCII 字符串转换为 double 值
大家好:rnrn 小弟用 SerialPort.ReadByte() 读取COM1 的一组ASCII字符.保存到 buffrn(int [] buff = new int[8] )rnrn 内容为 buff = " 128.66 " // ASCII 字符串rnrn 请问怎样将这个字符串转为 double 的 128.66 值呢? 谢谢!
c: 关于字符串转换问题?
我的代码如下,因为5<6,所以应该输出false, 可是这里老是输出True,应该怎么办啊?rn[code=c]char * ch="5>6";rnif(ch)rnprintf("True");rnelsernprintf("False");rn[/code]
求解一个c#字符串转换ASCII的问题!!
输入一串单词,把每个单词的ASCII码加29,再输出这个数,像“a”的ASCII码为97,ASCII97-29=68,ASCII码为68的是“D”,输出“D”,那么输入“head”输出什么?用c#实现。。。
c#字符串转换ascII码2
c#字符串转换ascII码,支持2,8,10,16进制
字符串转换ascII码(c#制作)
字符串转换ascII码,支持16进制和10进制
将上面字符串转换为ascii
W !&Bz旷樘韩厃scUJEA920)&('&&$! !!
C中怎样把字符串转换为ASCII码?
急用,多谢!
C/C++ 知识点回顾 字符串转换ASCII码、十进制数转换二进制数
#include #include #include using namespace std; //整数转换为二进制数 void int2binary(int n) { int a = n % 2; n = n >> 1; if (n==0) { } else { int2binary(n); } cout << a; } //字符串转换为ASCII码 int *
关于c语言字符串转换的问题
我写了两个函数,希望实现相同的功能。就是对满足条件的字符进行替换。但是两个函数输出结果却不一样。我也不知道出什么问题了。 rnrn1.rnvoid encryptChar() rnrn rnrnint i,j,len; rnrnchar pf; rnrnfor(i=0;i='0'&&pf<='9')) rnrn; rnrnelse rnrnxx[i][j]=pf; rnrn rnrn rnrn rn2.rnvoid encryptChar() rnrn rnrnint i,j,len; rnrnfor (i=0; i='0' && xx[i][j]*11%256<='9') || xx[i][j]*11%256<=32) rnrn; rnrnelse rnrnxx[i][j]= xx[i][j]*11%256; rnrn rnrn rnrn rnrn第二个出的是正确的结果。为什么呢? rn我又改写了一下, rnvoid encryptChar() rn rnint i,j,len; rnchar pf; rnfor(i=0;i='0'&&pf<='9')) rnif((xx[i][j]*11%256<=32)||(xx[i][j]*11%256>='0'&&xx[i][j]*11%256<='9')) rn; rnelse rnxx[i][j]=pf; rn rn rn rnrn为什么第二个if就能出正确的结果呢? rnrn第一个if为什么就不行呢? rnrn第一个if修改了什么了么?
关于C字符串转换的问题。求解
如题。心手,没入门,希望论坛里的各位大哥多多批评。rn下面是代码rn#includern#includernchar strlen(char str)rnrnint i=0;rnrnif(str==NULL)rnreturn 0;rnelsernrnfor(;str!='\0';)rnrnrni++;rnrnrnrnreturn i;rnrnchar 1lase(char str)rnrnchar*str1=malloc(strlen+1)rn*str1=str;rnif(str1>='97'&&str1<='122')rnstr1-=32;rnreturn str1;rnrnmain()rnrnchar str,str1;rnscanf("&s",str);rnprintf("%s\n",str);rnprintf("s\n",str1);rnreturn 1;rn
求:ebcdic to ascii 中文字符串转换函数
已经搜索过论坛,没有找到可以转换中文字符串的函数,拜托各位了。
如何使用ASCII码字符串转换成字符?
[code=VB.NET]rnDim ascEC As Encoding = Encoding.ASCIIrnDim str As String = "abc"rnDim a As Byte() = ascEC.GetBytes(str)rnDim cmd As String = BitConverter.ToString(a)rnrn[/code]rn如何利用变量a中的"61-62-63"转换成"abc"?
如何把二进制字符串转换为ASCII字符串??
比如:rnchar *data;rn//data中放的是一些二进制字符串rn如何把data字符串转换为ASCII字符串?显示在一个编辑框里Edit1中??
labview字符串转换为ASCII(16进制)——二
我们可以得到最后一个字符的ASCII时,通过for循环可以将每个数据得到。 这里讲得到的数据转换为字符串拼接起来 字符串进行拼接 这里发现还有一个问题有待解决,如何字符串的值小于15时,正常我们的得到ASCIIS是一个字符,但是,实际情况确实2个字符。 例如:我们字符转换过来的是数值10,换行符的十进制数值为10,16进制字符串转化后为A,在我们使用数据时,应当为0A,这里就存...
ascii字符串转换为16进制(二进制)的方法
在写串口通信的小程序的时候,发送数据比较好用十六进制发送,但是想接收(用ReadFile函数)数据也用十六进制接收,请问怎么办?有windows的函数提供这个功能么?rn比如字符串是“#1”对应“23 31”。最好能直接转换为二进制的。rn求帮助,谢谢!!
怎样把一字符串转换为ASCII?
怎样把一字符串转换为ASCII?
如何将一个字符串转换成标准ASCII值
如何将一个字符串转换成标准ASCII值
有没有一个字符串转换为对应ASCII的函数??
例如:rn 1234A--->31 32 33 34 41
java 与c 汉字 ascii问题
一个用C语言写加密文件,需要用JAVA来解密,加密用的是字符移位,但是JAVA得到汉字的ascii与C得到的acsii不同,想请高手解释一下
字符串转换数字.c
#includeint main(){ long int m=0; char s[1024]="";    printf ("pelase input a strings for s\ns = "); scanf ("%s",s) ; int n=1; int i,j; for(i=0;s[i];i++) { if(s[i]>='0' &&s[i] m = m*10 + s[i]-'0'
c 字符串转换int
#include #include #include #include using namespace std; int main() {     int c;     char s[4];     scanf("%s",s);     c=atoi(s);     printf("%d",c);     return 0; }
c语言 数值字符串转换
题目描述 写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 ) 输入描述: 输入一个十六进制的数值字符串。 输出描述: 输出该数值的十进制字符串。 示例1 输入 0xA 输出 10 **********************************************
C库函数(字符串转换篇)
包括的函数: atof 将字符串转换成浮点型数 atoi  将字符串转换成整型数 atol 将字符串转换成长整型数 gcvt 将浮点型数转换为字符串,取四舍五入 strtod 将字符串转换成长整型数 strtol 将字符串转换成长整型数 strtoul 字符串转换成无符号长整型数 toascii 整型数转换成合法的ASCII 码字符 tolower:大写字母转换成小写字母 toupper:小写字母转换成大写字母
C/C++字符串转换的函数
在C/C++中有把字符串转化为整数和浮点数的函数吗?比如像StrToInt, StrToFloat等
请教各位老师关于字符串转换ASCII码的问题!
rn 我想编写一个函数 rn FunASC(char str[])rnrn//将这个传进来的字符串提取 这个串char类型但里面为数字(ASC码)rn我想将这个串中的数字提取出来转换成字符 如果是INT类型就很好解决但是char类型就不知道该怎么做了rn请大家给点思路rn
PHP代码转换成C#,关于PHP字符串转换为ASCII的问题
[code=PHP]$coded .= substr($str, $i, $keylength) ^ $keyrnrn* @key string rn* @coded string[/code]rnrn一段简单的代码,就是很不明白这个异或的时候是对两个字符串做计算,看PHP文档说是把字符串转换成ASCII码后进行的计算。rnrn但是我进行对字符串转换为ASCII的处理,rn [code=C#]/// rn /// 获取ASC码 rn /// rn /// rn /// rn private static int ASC(String Data)rn rn byte[] b = System.Text.Encoding.Default.GetBytes(Data);rn string p = "";rn for (int i = 0; i < b.Length; i++)rn rn p += (int)b[i];rn rnrn return int.Parse(p);rn [/code]rnrn但是,这个方法根本就不行,很少的字符串都会返回一个超出int值范围的数字。。。(很大很大)rnrnrn我想知道PHP里面的字符串转换成ASCII是怎么一个过程? 和结果。
字符串转换的问题
下面这个方法是把一个字符串转换成ASCII编码的形式,之后以string类型返回rnrn调用的时候如果传一个空字符串,例如:pwd="",或者pwd=null;rnrn当在类内部调用的时候,方法返回值是"065a5e21fc56420021b32021"rnrn可是我编译成DLL,在另一个项目里调用的时候,返回值就成了空的。rnrn谁知道是怎么回事??rn[code=csharp]public static string Encrypt(string pwd)rn rn string value = "065a5e21fc56420021b32021";rn if (!String.IsNullOrEmpty(pwd))rn rn ASCIIEncoding encoding = new ASCIIEncoding();rn byte[] b = encoding.GetBytes(pwd);rn string c = null;rn foreach (byte i in b)rn rn if (i < 100)rn rn c = "0" + i.ToString() + c;rn rn elsern rn c = i.ToString() + c;rn rn rn value = c;rn rn return value;[/code]
??字符串转换问题??
如何把090012008-08-081.23.4rn转换为00 09 00 00 01 02 00 00 08 00 08 00 08 01 02 03 04
字符串转换问题?????????????????????
有什么方法可以将串"D:\tmp\lyptest333.xls"转换为"D://tmp/lyptest333.xls"
字符串转换问题
varrn s:string;rn x:double;rn...rn s:='1*2+3*4';rn怎样才能使得x:=1*2+3*4=14?
字符串转换问题》》
编个函数,把8进制字符串转换成2进制字符串,怎么做啊?谢谢
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件