如何判断一个字节是否是一个汉字中的一部分

UNICODE是万能编码,包含了所有符号的编码,它规定了所有符号在计算机底层的二进制的表示顺序。

在UTF-8编码中一个中文占三个字节

比如 汉字 "张" 对应的三字节编码是[229 188 160]

但是如何判断,229 188 160 是组合的呢,这里涉及到一套规则

UTF规定:

如果一个符号只占一个字节,那么这个8位字节的第一位就为0。

如果为两个字节,那么规定第一个字节的前两位都为1,然后第一个字节的第三位为0,第二个字节的前两位为10

然后如果是三个字节的话,那么第一个字节的前三位为111,第四位为0,剩余的两个字节的前两位都为10。

所以一个字节最大是 011111111 转换成十进制是 127 如果大于127则认为不止一个字节

两个字节最大数是 11011111 10111111  转成成十进制分别是223 和 191

两个字节最大数是 11101111  10111111 10111111    转成成十进制分别是239 和 191 和 191

这里设n为字节

n<128 则为1个字节

128<n<223为两个字节

223<n<239 为三个字节

这样可以轻松判断出来是否是一组

原文地址:https://www.cnblogs.com/Mrycy/p/12013274.html

时间: 2024-11-06 17:41:40

如何判断一个字节是否是一个汉字中的一部分的相关文章

如何判断CPU字节序之[Big-endian vs Little-endian]

[本文链接] http://www.cnblogs.com/hellogiser/p/big-endian-vs-little-endian.html [Big-endian vs Little-endian] 超过一个字节的数据在内存中会用几个字节存储,根据数据在内存的存放方式,分大端模式(Big-endian)和小端模式(Little-endian). 大端模式是将数据的高位存在内存的低位地址:小端模式而是将数据的高位存在内存的高位地址,以下是十六进制0x12345678在内存地址的两种存储

一个字节是多少?

字节(Byte):字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位. 字节是计算机信息技术用于计量存储容量和传输容量的一种计量单位,1个字节等于8位二进制. 在ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间. 符号:英文标点占一个字节,中文标点占两个字节.举例:英文句号"."占1个字节的大小,中文句号"."占2个字节的大小 一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,如一个ASCII码就是一个

一个字节中存在着多少个二进位1

一个字节中二进位1的个数 两个相似的方法,一个右移所查看的字节:一个查看左移1. #include <stdio.h> int getOneBits(unsigned char num) { int count = 0; for(int i = 0; i < 8; i++) { if((num & (1 << i)) != 0) count++; } return count; } int main(void) { printf("%d\n", g

Java基础知识强化之IO流笔记27:FileInputStream读取数据一次一个字节数组byte[ ]

1. FileInputStream读取数据一次一个字节数组byte[ ]  使用FileInputStream一次读取一个字节数组: int read(byte[]  b) 返回值:返回值其实是实际读取的字节个数 . 2. 代码示例: 1 package com.himi.fileinputstream; 2 3 import java.io.FileInputStream; 4 import java.io.IOException; 5 6 7 8 /** 9 * 10 * 使用FileIn

java文件流之copy文件(用一次读取一个字节数组方式)

package fileoutputstream; import java.io.FileInputStream; import java.io.FileOutputStream; public class CopyFileDemo { public static void main(String[] args) throws Exception { //封装数据源 FileInputStream fis = new FileInputStream("fos.txt");//fos.t

判断一个Activity 判断一个包 是否存在于系统中 的方法

判断一个包是否存在于系统中(来自网络),经过测试,好用: public boolean checkBrowser(String packageName) { if (packageName == null || "".equals(packageName)) return false; try { ApplicationInfo info = getPackageManager().getApplicationInfo( packageName, PackageManager.GET_

JS判断浏览器是否支持某一个CSS3属性的最佳实践

css3的出现让浏览器的表现更加的丰富多彩,表现冲击最大的就是动画了,在日常书写动画的时候,很有必要去事先判断浏览器是否支持,尤其是在写CSS3动画库的时候.比如transition的animation-play-state,就只有部分浏览器支持. 检测方法 下面的方法可以使用脚本判断浏览器是否支持某一个CSS3属性: /**2017-01-05 * 判断浏览器是否支持某一个CSS3属性 * @param {String} 属性名称 * @return {Boolean} true/false

Js判断一个字符串是否包含一个子串

Js中经常遇到判断一个字符串是否包含一个子串,java语言中有containes的方法,直接调用就可以了.除非引用第三方数据库,Js中没有contains方法. 为了实现更java语言中containes方法相同的效果,最简单的一种做法是利用js中字符串查找位置的方法indexOf(“o”大写).此方法的返回的值得可能有 -1,0,n(正整数)三种情况.0是当子串在字符串第1位开始包含的情况下返回,例子如下: <script> var str="he"; var strin

【C语言】判断一个字符串是否是一个字符串的旋转字符串

//判断一个字符串是否是一个字符串的旋转字符串 //利用库函数实现 #include <stdio.h> #include <string.h> #include <assert.h> int IsRotate(char *str1, const char *str2) { assert(str1); assert(str2); strncat(str1, str1,strlen(str1)); if (NULL == strstr(str1, str2)) retur