位操作与中文字符问题
来源:互联网 发布:win7软件中文乱码 编辑:程序博客网 时间:2024/05/22 07:05
1.位操作
信息按位存储,占据空间小。但读取比较麻烦。
1)信息的按位存储
引例:
舞台上有八盏灯(1:亮,0:灭);
int status[8]={1,0,0,0,1,1,0,1};
char staus[]={1,0,0,0,1,1,0,1};
应用场景:嵌入式(GPIO,一位连接一根电线);
数据压缩编码
2)移位
位操作一般以unsigned char a=0x13;//00010011;
a>>2;//右移两位,000001000;
a<<2;//左移两位,01001100;
空则补零;移位相当于乘除法,但不绝对。
计算能力:对CPU而言,移位比乘除要快。
有符号数:补码等,一般不适用于工程问题。
3)取反操作和与操作
unsigned char b=0x12;//00010010;
unsigned char a=~b;//11101101;
'&':二元操作符:按位比较(全1为1);
应用场景:
(1)判断某一位的状态:
unsigned char flag= a& 0x10;//bit4为1
if(flag){
//亮
}
(2)按位清零
bit2,bit3清零,11110011:0xf3;
unsigned char a &=~(0x03);
(3)综合运用
int year =data[0]>>1;
int month=(data[0]&0x01)<<3+data[1]>>5;
int day=data[1]&0x1f;
4)或操作与base64编码
置1:a|0x08;
六十四(base):
unsigned char data[1024];
3字节转化为4字节
D[0]=data[0]>>2;
D[1]=(data[0]&0x03)<<4+data[1]>>4;
D[2]=(data[1]&0x0F)<<2+data[2]>>6;
D[3]=data[2]&0x3F;
2.中文问题
1)拉丁字符集
ASCII码:'A':65
alpha,beta无法用一个字节表示。
AScII码:0-127,最高位是0.
拉丁字符集:最高位为1.
2)中文字符集
GB2312->GBK(扩展)-》GB18030
BIG:繁体字,“CJK”:中日韩,Unicode统一码:0-0x10FFFF;
中文字符集:最高位也是1;
utf-8/utf-16;utf-32
3)字符编码转换
(1)gbK->UTF-16
wchar_t宽字符。
char gbk[]="张三';
wchar_t text_utf[256]={0};
int n=MultiByteToWideChar(CP_ACP,0,gbk,strlen(gbk),text_utf,256);
(2)Unicode字符串到多字符串
char text_utf8[256];
int n2=WideCharToMultiByte(CP_UTF8,0,text_utf16,n1,text_utf8,256,NULL,0);//六个字符串。
- 位操作与中文字符问题
- java与C++中文字符的问题
- 位操作和字符转换的一些小问题
- 皇后问题(c版)与位操作
- vs2005中文字符问题
- 中文字符编码问题
- python 中文字符问题
- 中文字符乱码问题
- Python中文字符问题
- python 中文字符问题
- django中文字符问题
- 解决osg路径与文件名中的中文字符问题
- java 前端与后端联动中文字符编码问题
- 位操作与位字段
- js验证2-20位中文字符
- 按位反转字符问题
- 按位反转字符问题
- 按位反转字符问题
- SM2算法第七篇:Windows下Openssl安装与配置
- Hive教程
- C语言函数 选择法对一维数组排序
- 决策树之ID3算法
- 那些NB的chart网址
- 位操作与中文字符问题
- DWR 消息推送
- poj2955——Brackets(区间dp)
- Android RelativeLayout和LinearLayout性能分析
- Xamarin Android 绑定jar库同时将so库打包进去
- ClassLoader类加载机制
- Flash游戏开发实例①打砖块-3-部署砖块(1)
- robotframework 基础应用
- 深入探究递归神经网络