字符串转化为整数/char和unsigned char_马鸿凯_新浪博客

前几天遇到个东西, 以前也遇到过今天总结下吧. 这几天sha1做的我挺烦的.

问题是 ​: 我们遇到ASCII码超过127怎么办? 字符的表示是什么?

1  char 32位模式下表示一个字节,即 -128~127

    采用的是ASCII码编码方式是0~127 

2 unsigned char 32位模式下表示一个字节,即 0~255

  当超过127的时候, 不在是单字节方式而是字节序列, 应该这样说吧 是单字节字符集

C语言显示ascii码超过127的字符这个链接其实有点问题(个人评价), 因为没有超过127的字符, 其与的应该采用的是ISO-8859-1编码方式(ISO-8859-1编码也是单字节编码,最多能够表示256个字符。)

至于其显示方式 和控制台有关系, 具体更改方式的话是这样的:

方法是:请设置Dos窗口的默认代码页为美国而不是简体中文。右键单击Dos窗口的标题栏,在弹出菜单中选择"默认值",修改默认代码页为"437   OEM-美国",就可以了。​

3 上面2个可以看到进行扩展的时候, unsigned char 不会​符号扩展 因为最高位是0 , 所以char为正数的时候也是这样

4 char * 和 unsigned  char*

 char * 表示字符串, unsigned char * 表示的是“字节序列”, 是按unsigned char 类型解释所指向的内容。具体应用不同,有的要求按无符号类型处理,像网络编程中IP地址,MAC地址等​.也就是说,换句话说, 其中的内容不一定是文本,比如一段MIDI音乐。如果已经知道里边确实是文本字符串,不管哪种,需要时强制转换一下就是了. (字节序列, 字节存储的一定序列, 例如网络编程时候的htons()等网络字节序)


5 字符串转换;​

(1)​ char 向 int 转换就不说了直接赋过去

(2)

 1)字符串向int转换 

    例如: "1234" ->1234

  char *str  = "1234";

   int n = atoi(str);

  2)int向字符串转换:

   例如: 1234 -> "1234"

​  int n = 1234;

  char str[20];

  itoa(n,str,10);​

 3) 两个函数的具体情况:

参考: C语言中char int转换

itoa

  功 能:把一整数转换为字符串  

       用 法:char *itoa(int value, char *string, int radix);  

        详细解释:itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写.  

         参数:  value: 待转化的整数。  radix: 是基数的意思,即先将value转化为radix进制的数,范围介于2-36,比如10表示10进制,16表示16进制。  * string: 保存转换后得到的字符串。  

返回值:  char * : 指向生成的字符串, 同*string。

该函数的头文件是"stdlib.h"

atoi

  C语言库函数名: atoi  

       功 能: 把字符串转换成整型数  

       函数说明: atoi()会扫描参数nptr字符串,检测到第一个数字或正负符号时开始做类型转换,之后检测到非数字或结束符 \0 时停止转换,返回整型数。  

      原型: int atoi(const char *nptr);  

      需要用到的头文件: #include

这个先这样吧,  下一篇文章 补充下缺少的部分

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ma_Hong_Kai

微信 2936729162

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值