C/C++ 各进制赋值、int/char转换、sscanf/sprintf、位操作运算
一、各进制赋值
1.十六进制赋值
int i=0x12AD;
int i=0X12AD;
int i=0x12Ad;
int i=0X12Ad;
//以上都是十六进制,表示十进制173;
2.八进制赋值
int num=017;
//数字前面加0就是8进制,017表示十进制15,若写018则编译出错。(error C2041: 非法的数字“8”(用于基“8”))
二、int/char/string转换
1.char*/char[]转int:atoi()
char* a="154"; int i=atoi(a); //成功
char a[]="154"; int i=atoi(a); //成功
char* a="abc"; int i=atoi(a); //i=0,也没出错
2.int转char[](转char*老崩溃)
int n=154;
char p[10];
itoa(n,p,16); //非STL,vs里能用,一些在线oj不能用
//十六是进制,可以自己指定。结果:p=“9a”;
3.char*/char[]转string
char*/char[] p="dsdsdsd";
string str=p;//直接赋值就行
4.string转char*
string p="ewqewq";
const char* o=p.c_str();//必须得是const
5.string/int互转
通过char即可;
三、sscanf/sprintf(c语言)
scanf:把键盘输入的数据给指定变量;
printf:打印指定变量至屏幕;
sscanf:把某const char*的数据给指定char*变量;
sprintf:把数据输入到指定char*。
1.sscanf():int sscanf(const char *buffer, const char *format, [argument ]...);
e.g.char buf[512] ;
sscanf("123456 ", "%s", buf);
printf("%s\n", buf);
结果为:123456
e.g.sscanf("123456 ", "%4s", buf);
printf("%s\n", buf);
结果为:1234
2.sprintf():int sprintf(char *buffer, const char *format, [argument] … );
格式控制符的类型要和后面argument的类型一样。
sprintf(s, "%d", 123); //把整数123打印成一个字符串保存在s中,
sprintf(s, "%8x", 4567); //小写16进制,宽度占8个位置,右对齐
sprintf(buf, "fdsafsdf");
char a = 'a'; sprintf(buf, "The ASCII code of a is %d.", a);
四、位操作运算
位操作只能用于整形数据,对实类型进行位操作会被编译器报错。
1.&(与操作)
int i=100;(二进制1100100)
则i&1=0;//只是最后一位和1进行与运算,所以可以判断奇偶性;
2.^(异或,两者不同则为1)
void Swap(int &a, int &b)
{
if (a != b)
{
a ^= b;
b ^= a;
a ^= b;
}
} //交换两个数不用第3个变量
3.移位
e.g.int n=98;
n=n>>1;//n=49;
<<各二进位全部左移若干位,高位丢弃,低位补0
>>各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)
C/C++ 各进制赋值、int/char转换、sscanf/sprintf、位操作运算的更多相关文章
- Java 整数型的进制间的互相转换
/** * 整数型, 进制间的互相转换 */ public class IntConversion { public static void main(String[] args) { int num ...
- c# 16进制转int
//十进制转二进制Convert.ToString(69, 2); //69为被转值//十进制转八进制Convert.ToString(69, 8); //69为被转值//十进制转十六进制Conver ...
- Java中byte与16进制字符串的互相转换
* Convert byte[] to hex string.这里我们可以将byte转换成int,然后利用Integer.toHexString(int)来转换成16进制字符串. * @param s ...
- [转]Java中byte与16进制字符串的互相转换
Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以把每个byte转换成两个相应的16进制字符, ...
- 进制与ASCII码转换
LabeledEdit4.Text := chr(); // 用十进制方式赋值: ASCII码转换为字符 65 -> A LabeledEdit4.Text := #; // 用十进制方式赋值: ...
- Java Hex 16进制的 byte String 转换类
package mobi.dzs.android.util; import java.util.Locale; /** * 16进制值与String/Byte之间的转换 * @author Jerry ...
- 字符串/16进制/ASCII码的转换
1 /// <字符串转16进制格式,不够自动前面补零> 2 /// 假设文本框里面填写的是:01 02 03 04 05 06 3 /// Str获取的是01 02 03 04 05 06 ...
- python中2进制、10进制、16进制等之间的转换
10转2: bin(8) # '0b1000' 2转10: int( 10转16: hex(15) # '0xf' 16转10: int( 2进制和16进制中间通过转10进制可以相互转换 from b ...
- PHP中进制之间的互相转换
常见的进制: 二进制 binary -----> bin 八进制 octal -----> oct 十进制 decimal -----> dec 十六进 ...
随机推荐
- HDU2819 Swap —— 二分图最大匹配
题目链接:https://vjudge.net/problem/HDU-2819 Swap Time Limit: 2000/1000 MS (Java/Others) Memory Limit ...
- RabbitMQ(三)RabbitMQ消息过期时间(TTL)
在RabbitMQ(二)AMQP协议mandatory和immediate标志位区别中我们提到,在RabbitMQ3.0以后的版本里,去掉了immediate参数支持,要实现类似的确认功能要使用TTL ...
- jQuery简单纯文字提示条
如何制作jQuery简单纯文字提示条,先介绍提示条(tooltip)的意思是用户鼠标悬停经过事件发生提示title.它们已经呈现在大多数浏览器中,当你可以提供一个链接或图片的title属性,就是用户将 ...
- mac系统下配置aapt环境变量
在当前用户目录下新建.bash_profile文件,执行以下命令: vi .bash_profile 然后保存,输入命令 :wq 最后使命令生效,执行命令 source .bash_profile
- I.MX6 Android stlport 使用
/****************************************************************** * I.MX6 Android stlport 使用 * 说明: ...
- 【POJ 3107】 Godfather
[题目链接] 点击打开链接 [算法] 这题描述有些繁琐,先简化一下题意 : 对于一棵无根树,删除一个节点,使得其余的联通块中,最大的联通块最小 那么,这题就很好做了 对这棵树进行一遍DFS,求出每个节 ...
- bzoj4326
二分+树剖+差分 之前的做法naive,莫名其妙的wa,明明uoj95分 看到最小最大上二分,树上路径问题直接剖,然后问题就转化成了一个判定问题,每次二分出最长路径长度,问能不能达到.那么我们就把所有 ...
- c语言struct和c++的class的暧昧
c语言风格的封装 数据放在一起,以引用和指针的方式传给行为c++ 认为封装不彻底 1数据和行为分开 对外提供接口 2没有权限设置 看看struct的一个例子 //data.h //c语言风格的封装 数 ...
- asp.net mvc 学习资料
ASP.NET MVC 的 WebGrid 的 6 个重要技巧 http://www.oschina.net/translate/webgrid-in-asp-net-mvc-important-ti ...
- bzoj 1415: [Noi2005]聪聪和可可【期望dp+bfs】
因为边权为1所以a直接bfs瞎搞就行--我一开始竟然写了个spfa #include<iostream> #include<cstdio> #include<queue& ...