精华内容
下载资源
问答
  • 二进制同十进制类似,也是一种计数方式,不过在二进制中最大的单位数字是 1(十进制中是 9),也就是说十进制中的 2 在二进制中就要写成 10 了。以此类推,例如 7 在二进制中就应该是 111。二进制是唯一能让计算机...
    	二进制同十进制类似,也是一种计数方式,不过在二进制中最大的单位数字是 1(十进制中是 9),也就是说十进制中的 2 在二进制中就要写成 10 了。以此类推,例如  7 在二进制中就应该是 111。二进制是唯一能让计算机识别的信息。
    	然后再说 字节。字节是计算机的最小处理单元。一个字节占 8 位,也就是说在计算机中最小可以处理 8 位的二进制数。例如 01101011 这么一个数。
    	然后再说 Ascii,这全称叫“美国信息交换标准码”。因为计算机只能识别二进制数,为了让自然语言中的各个符号例如 abcd 0123 和标点符号之类的字符能让计算机处理,就必须建立这么一个标准码来翻译成计算机能识别的二进制数。刚才说了计算机的最小处理单元是 8 位的二进制数,因此这个标准码就占用了 8 位。而 8 位的二进制数能有多少个呢?你自己算一下,换成十进制是从 0 到 255。然而标准的 ascii 没有用满这 8 位,只用了 7 位(计算机处理起来仍然是按 8 位,但是实际起作用的只有 7 位),因为当时人们觉得已经足够了。于是重新算一下,7 位的二进制数换成十进制是从 0 到 127,于是 ascii 能翻译的人类语言的字符有 128 个。也就是说,128 个数每个数对应了一个人类语言中的符号。
    	后来,人们发现 128 个字符远远不够,例如制表符、数学符号啊里面都没有,于是就出现了 extended ascii,就是 “扩展 ascii”。这张表在 128 个数的基础上扩展到了 256 个,于是就占满了 8 位一字节。
    	再后来,信息全球化以后,人们又发现,256 个字符仍然不能表示全人类的语言,像汉字就有至少 20000 多个,于是进一步扩展了 ascii 字符表,这次扩展到了 2 个字节,也就是 16 位。那么再算一下 16 位长度的二进制数能有多少个?那是 65536 个。于是基本上够用了。这就是 Unicode 字符集
    	再之后还出现了各种基于 Unicode 的编码方式,比如 UTF-8,UTF-16,GBK,GB2312 这些。这些都是字符编码,简单说就是人们又建了各种其他的码表来和 Unicode 表对应起来。
    	例:无符号二进制110111转化成十进制数是?
    	110111=1*2^0+1*2^1+1*2^2+0*2^3+1*2^4+1*2^5=1+2+4+0+16+32=55,由此55就是表示成110111的计算机编码。
    
    
       
    展开全文
  • #二进制转中文 print(chr(0b1001110110000)) #十进制中文 print(chr(20320)) #十六进制中文 print(chr(0x4f60)) #十进制转二进制 print(bin(20320)) #十进制十六进制 print(hex(20320)) #二进制...

    python 3中,中文要转成unicode,使用ord函数

    print(ord('你'))

    20320

    #二进制转中文

    print(chr(0b1001110110000))

    #十进制转中文

    print(chr(20320))

    #十六进制转中文

    print(chr(0x4f60))

     

    #十进制转二进制

    print(bin(20320))

    #十进制转十六进制

    print(hex(20320))

     

    #二进制转十进制

    print(int(0b1001110110000))

    #二进制转十六进制

    print(hex(0b1001110110000))

     

    #十六进制转十进制

    print(int(0x4f60))

    #十六进制转二进制

    print(bin(0x4f60))

     

    展开全文
  • webscoket二进制GBKUTF-8websocket数据js脚本网页代码测试:网页测试结果: websocket数据 websocket服务器发送的二进制数据为中文GBK或者gb2312,网页显示的为utf-8,由此需要将二进制数据转为为unicode,然后...

    websocket二进制数据解码

    websocket服务器发送的二进制数据为中文gbk或者gb2312,网页显示的为utf-8,由此需要将二进制数据转为为unicode,然后转换为中文显示。

    不废话上js脚本

       <script language="javascript">
       
            function gbk2unicodeUint16Array(gbkArrayBuffer){
                var i;
                var j;
                
                //必须转换成无符号
                var gb_temp=new Uint8Array(gbkArrayBuffer);
                var gb_temp16=new Uint16Array(gbkArrayBuffer);      
                var unicode=new Uint16Array(gbkArrayBuffer.byteLength);
               
                i=0;
                for (j = 0; i < gb_temp.byteLength; j++) {
                   
                    if (gb_temp[i] <= 0x80) {
                        //0值无数据
                        if (gb_temp[i]===0)break;
    
                        //正常字符
                        unicode[j] = gb_temp[i];
                        i++;
                    }
                    else {
                        //中文或者其他字符
                        var temp;
                        //alert(gb_temp[i]+" "+gb_temp[i+1]+" "+gb_temp16[0]);
    
                        temp = (gb_temp[i]<<8)|gb_temp[i+1];//两个字节合成一个值
    
                        //alert(temp);
                        unicode[j] = gbk2uni_array[temp];//得到unincode值
                        i += 2;
                    }
                }
    
                return unicode.subarray(0,j);;
            }
    
    
            function UnicodeToUtf8(Uint16Arraybuffer) {
                var uchar;
                var utf8str = "";
                var bUint16Array = false;
               
                return String.fromCharCode.apply(null, new Uint16Array(Uint16Arraybuffer));
                
                //decoder = new TextDecoder(encoding);utf8str = decoder.decode(ArrayBuffer, 'gbk');//
                for (var i = 0; i < Uint16Arraybuffer.length; i ++) {
                    uchar = (Uint16Arraybuffer[i]);
                   
                    //return String.fromCharCode.apply(null, new Uint16Array(Uint16Arraybuffer));
                    utf8str = utf8str + String.fromCharCode(uchar);  //使用String.fromCharCode强制转换 Unicode 为中文字符串
                }
                return utf8str;
            }
    
            //测试映射表
            var unicodevalue = gbk2uni_array[0xD6D0];
    
            //unicodebf
            var unicode_arbf = new ArrayBuffer(2);
            var unicode_16buf = new Uint16Array(unicode_arbf);
            //var dv = new DataView(unicode_arbf);
            //dv.setUint16(0, unicodevalue,true);
            unicode_16buf[0]=unicodevalue;
            alert(unicode_16buf);
            alert(UnicodeToUtf8(unicode_16buf));
            
            //GBK码 
            var gbk_arraybuffer = new ArrayBuffer(2);
            var dv2 = new DataView(gbk_arraybuffer);
            dv2.setUint16(0, 0xD6D0); //(模拟SOCKET原始数据"中"字)
    
            //转unicode码
            var unicode_arraybf= gbk2unicodeUint16Array(gbk_arraybuffer);
    
            alert(unicode_arraybf);
            
            //unicode转utf8
            var ch = UnicodeToUtf8(unicode_arraybf);
    
            document.getElementById("aa").innerHTML = "GBK = 0XD6D0 <br>GBK(10进制) = "+0xD6D0+" <br>unicode(10进制) = "+unicode_arraybf+" <br>utf中文 = "+ch;
        </script>
    

    网页代码源文件

    <!DOCTYPE html
        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>websocket GBK字符转换utf</title>
    </head>
    
    <body>
        <div id="aa"></div>
        <script language="javascript" src="gbk2uni_array.js"> </script>
        <script language="javascript">
    
            function Utf8ToUnicode(strUtf8) {
                var i, j;
                var uCode;
                var temp = new Array();
                for (i = 0, j = 0; i < strUtf8.length; i++) {
                    uCode = strUtf8.charCodeAt(i);
                    if (uCode < 0x100) {         //ASCII字符 
                        temp[j++] = 0x00;
                        temp[j++] = uCode;
                    } else if (uCode < 0x10000) {
                        temp[j++] = (uCode >> 8) & 0xff;
                        temp[j++] = uCode & 0xff;
                    } else if (uCode < 0x1000000) {
                        temp[j++] = (uCode >> 16) & 0xff;
                        temp[j++] = (uCode >> 8) & 0xff;
                        temp[j++] = uCode & 0xff;
                    } else if (uCode < 0x100000000) {
                        temp[j++] = (uCode >> 24) & 0xff;
                        temp[j++] = (uCode >> 16) & 0xff;
                        temp[j++] = (uCode >> 8) & 0xff;
                        temp[j++] = uCode & 0xff;
                    } else {
                        break;
                    }
                }
                temp.length = j;
                return temp;
            }
    
            //16进制字符转纯数字,如A转成10 16进制字符10=16
            this.Str2Hex = function (s) {
                var c = "";
                var n = 0;
                var ss = "0123456789ABCDEF";
    
                //根据长度移动位置D6B0,字符D就向左移动24位
                for (var i = 0; i < s.length; i++) {
                    c = s.charAt(i);
                    n |= (ss.indexOf(c)) << ((s.length - 1 - i) * 4);
                }
                return n;
            }
    
            //从文本码表创建码表数组
            // var fso, ts, s ; 
            // var ForReading = 1; 
    
            // fso = new ActiveXObject("Scripting.FileSystemObject"); 
            // ts = fso.OpenTextFile(".\\gbkuni30.txt", ForReading); 
    
            // var s="";
            // var i=0;
            // var gbk2uni_array=new Array(65535);
            // var uni2gbk_array=new Array(65535);
    
            // while (!ts.AtEndOfStream && i<0) 
            // { 
            //     s = ts.ReadLine(); 
            //     var value = s.split(":");
            //     var gbk_value = Str2Hex(value[1]);
            //     var uni_Value = Str2Hex(value[0]);
    
            //     gbk2uni_array[gbk_value]="0x"+value[0];
            //     uni2gbk_array[uni_Value]="0x"+value[1];
    
            //     i++;
            // } 
            // ts.Close();
    
            // ts2 = fso.CreateTextFile("d:\\gbk2uni_array.js", true);
            // ts2.Write("var gbk2uni_array=["+gbk2uni_array.toString()+"];");
            // ts2.Close();
    
            // ts2 = fso.CreateTextFile("d:\\uni2gbk_array.js", true);
            // ts2.Write("var uni2gbk_array=["+uni2gbk_array.toString()+"];");
            // ts2.Close();
    
            function gbk2unicodeUint16Array(gbkArrayBuffer){
                var i;
                var j;
                
                //必须转换成无符号
                var gb_temp=new Uint8Array(gbkArrayBuffer);
                var gb_temp16=new Uint16Array(gbkArrayBuffer);      
                var unicode=new Uint16Array(gbkArrayBuffer.byteLength);
               
                i=0;
                for (j = 0; i < gb_temp.byteLength; j++) {
                   
                    if (gb_temp[i] <= 0x80) {
                        //0值无数据
                        if (gb_temp[i]===0)break;
    
                        //正常字符
                        unicode[j] = gb_temp[i];
                        i++;
                    }
                    else {
                        //中文或者其他字符
                        var temp;
                        //alert(gb_temp[i]+" "+gb_temp[i+1]+" "+gb_temp16[0]);
    
                        temp = (gb_temp[i]<<8)|gb_temp[i+1];//两个字节合成一个值
    
                        //alert(temp);
                        unicode[j] = gbk2uni_array[temp];//得到unincode值
                        i += 2;
                    }
                }
    
                return unicode.subarray(0,j);;
            }
    
            //
            function UnicodeToUtf8(Uint16Arraybuffer) {
                var uchar;
                var utf8str = "";
                var bUint16Array = false;
               
                return String.fromCharCode.apply(null, new Uint16Array(Uint16Arraybuffer));
                
                //decoder = new TextDecoder(encoding);utf8str = decoder.decode(ArrayBuffer, 'gbk');//
                for (var i = 0; i < Uint16Arraybuffer.length; i ++) {
                    uchar = (Uint16Arraybuffer[i]);
                   
                    //return String.fromCharCode.apply(null, new Uint16Array(Uint16Arraybuffer));
                    utf8str = utf8str + String.fromCharCode(uchar);  //使用String.fromCharCode强制转换 Unicode 为中文字符串
                }
                return utf8str;
            }
    
            //测试映射表
            var unicodevalue = gbk2uni_array[0xD6D0];
    
            //unicodebf
            var unicode_arbf = new ArrayBuffer(2);
            var unicode_16buf = new Uint16Array(unicode_arbf);
            //var dv = new DataView(unicode_arbf);
            //dv.setUint16(0, unicodevalue,true);
            unicode_16buf[0]=unicodevalue;
            alert(unicode_16buf);
            alert(UnicodeToUtf8(unicode_16buf));
            
            //GBK码 
            var gbk_arraybuffer = new ArrayBuffer(2);
            var dv2 = new DataView(gbk_arraybuffer);
            dv2.setUint16(0, 0xD6D0); //(模拟SOCKET原始数据"中"字)
    
            //转unicode码
            var unicode_arraybf= gbk2unicodeUint16Array(gbk_arraybuffer);
    
            alert(unicode_arraybf);
            
            //unicode转utf8
            var ch = UnicodeToUtf8(unicode_arraybf);
    
            document.getElementById("aa").innerHTML = "GBK = 0XD6D0 <br>GBK(10进制) = "+0xD6D0+" <br>unicode(10进制) = "+unicode_arraybf+" <br>utf中文 = "+ch;
        </script>
    
    </body>
    
    </html>
    

    js码表下载

    1.资源下载搜索 “webscoket二进制GBK转UTF-8 码表 js数组文件”
    2.或下载http://icu-project.org/repos/icu/data/trunk/charset/source/gb18030/gbkuni30.txt 然后转换为数组,网页源文件中有注释的转换代码。

    网页测试结果

    在这里插入图片描述

    参考感谢:

    https://github.com/breezechen/sconv

    展开全文
  • 十六进制转、十进制、字符串之间的相互转换 代码如下: #include <stdio.h> #include <stdlib.h> #include <stdint.h> #define IS_CAP_LETTER(c) (((c) >= 'A') && ((c) <= 'F')...

    十六进制面值转字符串、字符面值转十六进制、UNICODE与GBK互转


    源码下载地址:https://github.com/ankun6/unigbk_exchange

    全部函数如头文件中所示:

    //
    // Created by AnKun on 2019/12/16.
    //
    
    #ifndef UNIGBK_EXCHANGE_UTIL_H
    #define UNIGBK_EXCHANGE_UTIL_H
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <stdint.h>
    #include <stdbool.h>
    
    #define swap16(x) ((x&0XFF)<<8|(x&0XFF00)>>8)		//高低字节交换宏定义
    
    // 十六进制数转字符,例:0xA->'A'
    uint8_t hex2chr(uint8_t hex);
    
    // 字符转十六进制数,例:'A'->0xA
    uint8_t chr2hex(uint8_t chr);
    
    // unicode码转gbk字符串
    void unicode2gbk(void*  gbk, const uint16_t* unicode, uint32_t num);
    
    // gbk字符串转unicode码
    void gbk2unicode(uint16_t*  unicode, const void* gbk);
    
    // unicode十六进制字符串转gbk字符串
    void unistr2gbkstr(void* dst, const void* src);
    
    // gbk字符串转unicode十六进制字符串
    void gbkstr2unistr(void* dst, const void* src);
    
    // 小写字母转大写
    char lower2upper(char c);
    
    // 大写字母转小写
    char upper2lower(char c);
    
    // 十六进制数转字符串,例:0x12BC->"12BC"
    void hex2str(void* dst, int hex, bool isUpper);
    
    // 十六进制字符串转数值,例:"AABBCC" -> 0XAA,0XBB,0XCC
    void str2hex(const void* str, int len, uint8_t* hex);
    
    // 十进制数转字符串,例:132->"132"
    void int2str(void* dst, int num);
    
    // 整型数转二进制字符串,例:0xA->"1010"
    void bin2str(void* dst, int bin);
    
    // 整型数转八进制字符串,例:0x8->"11"
    void oct2str(void* dst, int oct);
    
    #endif //UNIGBK_EXCHANGE_UTIL_H
    

    测试程序:

    #include <stdio.h>
    #include "util.h"
    #include <string.h>
    #include <stdlib.h>
    /*
    
     在线unicode和gbk转换:http://www.mytju.com/classCode/tools/encode_gb2312.asp
    
     */
    
    void test_gbkstr2unistr(void)
    {
    	const uint8_t* gbk  = (const uint8_t*)"我A你";				// GBK字符串
    	uint8_t uni[10];
    	gbkstr2unistr(uni, gbk);
    	printf("------ gbk string convert to unicode string: %s\r\n", uni);
    }
    
    void test_unistr2gbkstr(void)
    {
    	const uint8_t* uni = (const uint8_t*)"621100414F60";		// unicode十六进制字符串
    	uint8_t gbk[10];
    	unistr2gbkstr(gbk, uni);
    	printf("------ unicode string convert to gbk string: %s\r\n", gbk);
    }
    
    void test_gbk2uni(void)
    {
    	int i = 0;
    	const uint8_t* gbk = (const uint8_t*)"我爱你A";		// GBK字符串
    	uint16_t uni[4];
    	gbk2unicode(uni, gbk);
    	printf("------ gbk convert unicode: \r\n");
    	for(i = 0; i != 4; i++)
    	{
    		uint16_t gbkcode = *(((uint16_t *)gbk) + i);
    		gbkcode = gbkcode >= 0x81 ? swap16(gbkcode) : gbkcode;
    		printf("   gbk:0x%04X    unicode:0x%04X\r\n", gbkcode, uni[i]);
    	}
    }
    
    void test_uni2gbk(void)
    {
    	uint16_t uni[4] = {0x6211, 0x7231, 0x4F60, 0x0041};	// 我爱你A的unicode码
    	uint8_t gbk[10];
    	unicode2gbk(gbk, uni, 4);
    	printf("------ unicode convert gbk: [0x%X 0x%X 0x%X 0x%X] -> %s\r\n", uni[0], uni[1], uni[2], uni[3], gbk);
    }
    
    void test_hex2str(void)
    {
    	uint8_t* hexstr[8];
    	hex2str(hexstr, 0xAABB0033, true);
    	printf("------ hex convert to string: \"%s\"\r\n", (char *)hexstr);
    	hex2str(hexstr, 0x0AB2, true);
    	printf("------ hex convert to string: \"%s\"\r\n", (char *)hexstr);
    }
    
    int main()
    {
    	test_gbkstr2unistr();		// 测试gbk字符串转unicode十六进制字符串
    	test_unistr2gbkstr();		// 测试unicode十六进制字符串转gbk字符串
    	test_gbk2uni();				// 测试gbk码转unicode码
    	test_uni2gbk();				// 测试unicode码转gbk码
    	test_hex2str();				// 测试十六进制转字符串
    	return 0;
    }
    
    

    运行效果:
    在这里插入图片描述


    ends…

    展开全文
  • 为什么要注意这三点: 1、首先是项目中用到的进制转换,常用的int ord hex 以及编写的转换函数,作为记录 ... 二进制,十六机制十进制比较容易,直接int(‘7a’,16)就可以了,但是注意这里是单字节,也就是...
  • 进制转换、unicode转换等

    千次阅读 2018-04-20 11:03:27
    例: 十六进制数字 0x04bd8 转换成 二进制new Number(0x04bd8).toString(2);二、字符串指定进制的数字:parseInt(str, ns); // 转化成十进制数字new Number( x ).toString( ns ); // 上述转换十进制...
  • 编码、进制转换、汉字转二进制

    万次阅读 2017-09-25 09:49:49
    UTF-8编码规则 中日韩汉字Unicode编码表 在线进制转换 在线进制转换 ASCII常用对照表 ascii码 十进制 二进制 十六进制
  • C#字符串转二进制二进制转字符串

    千次阅读 2018-12-29 09:19:00
    最近公司要做一个操作日志的模块,如果将操作日志以字符串的形式存到后台数据库,非常浪费内存...1、字符串转二进制 1 private string StringToBinary(string str) 2 { 3 byte[] data = Encoding.Unicode...
  • int(‘字符串’,2[16|8]) #可以把进制形式的字符串按照2进制|16进制|8进制的方式成10进制 例: int('79',16) 121 int('01010101010',2) 682 int('767',8) 503 .各进制转为2进制,8进制,16进制。bin,oct,hex...
  • 二进制转十进制 二进制转化为八进制 二进制转化为十六进制 八进制转化为十进制 八进制转化为二进制 八进制转化为十六进制 十进制转二进制 十进制转化为八进制 十进制转化为十六进制 十六进制转化为...
  • 模块包含了下面的各种转换: 二进制转十进制二进制转化为八进制二进制转化为十六进制 八进制转化为十进制八进制转化为二进制八进制转化为十六进制 十进制转二进制十进制转化为八进制十进制转化为十六进制 十六进制...
  • #len()返回字符串的长度 >>> a = '你好! >>> len(a) 3 #str()返回字符串形式 >>> a = 1,2,3 >>...#chr(x)返回Unicode编码x对应的单字符 >>> a = 1...
  • Unicode 码和汉字,十进制之间互!二进制、十六进制,十进制的转换
  • java中char数据类型在内存中的二进制形式为Unicode编码
  • 二进制转十进制 二进制转化为八进制 二进制转化为十六进制 八进制转化为十进制 八进制转化为二进制 八进制转化为十六进制 十进制转二进制 十进制转化为八进制 十进制转化为十六进制 十六进制转化为...
  • #实现字符串转换成二进制表示 #字符串 -> ASCII码数值 -> 二进制表示 ###str_bin = ' '.join([bin(ord(c)).replace('0b', '') for c in s]) 该代码可转换成裁开的for 循环,如下四行代码: tmp = [] for...
  • asp实现二进制字符串转换为Unicode字符串
  • java 汉字转UniCode二进制字符串

    千次阅读 2019-06-23 17:37:19
    public static void main(String[] args) { System.out.println(toUnicode("汉")); System.out.println(strToBinStr("汉"));... //汉字转UniCode public static String toUnicode(String s) { String a...
  • 二进制转base64

    2018-08-30 19:40:00
    1. response(后台返回): const buffer = response.arrayBuffer(),将级制成arrayBuffer类型 2. buffer成base64 function arrayBufferToBase64 = buffer => { let binary = ''; const bytes ...
  • a = u'\x91'#字符串,unicode编码,\x表示16进制 b = '\x91'#字符串,unicode编码,\x表示16进制 ...print(b == c)#说明字符的表示有2种,一种是人能看懂的字符,另一种是字符unicode16进制...
  • 下面进行了解UTF-8的二进制编码方式。 为啥要了解这个,因为js中所有是string类型都是使用UTF-16编码的 因此我们与后端进行通信时,需要转换成与之一致的编码。(后端或者前端转换) UTF-8编码方式 注: 1. Unicode码...
  • UNICODE字符串与二进制字符串互

    千次阅读 2016-12-13 16:14:32
    UNICODE字符串与二进制字符串互 有时会使用到的字符串与二进制字符串互相转换。 import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; public class Test { /** * @...
  • 今天来学习UTF8转Unicode,UTF16转Unicode以达成UTF8,UTF16之间的互。 提炼成函数的公式我并没有放出来,我的目的只是为了更加理解 字符编码之间的关系。 如果你需要转码方式,可以找其他的库,或者根据我文章来...
  • //字符串转二进制 byte[] data = Encoding.Unicode.GetBytes(s); //二进制转字符串 string s= Encoding.Unicode.GetString(data);
  • 20.1 binascii:二进制和ASCII互 作用:二进制和ASCII互相转换。 Python版本:1.5及以后版本  binascii模块包含很多在二进制和ASCII编码的二进制表示转换的方法。通常情况不会直接使用这些功能,而是使用...
  • Unicode编码:保存二进制图片

    千次阅读 2014-01-03 22:22:57
    Cookie不仅可以使用ASCII字符与Unicode字符,还可以使用二进制数据。 例如数字证书,提高安全度。使用二进制数据时也需要进行编码 保存二进制数据内容,不实用。Cookie内容过多,影响速度。应少而精 base64....
  • unicode,ascii,二进制转换工具
  • import java.io.ByteArrayOutputStream;  import java.lang.Character.UnicodeBlock;  import java.util.regex.Matcher;... * 该类处理字符串的转码,可以处理字符串到二进制字符、16进制字符、

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 128,813
精华内容 51,525
关键字:

二进制转unicode