编码转换

Byte和byte[]数组

大城市里の小女人 提交于 2019-12-20 10:59:02
Byte和byte[]数组,“表示一个 8 位无符号整数, 一般为8位二进制数”。 Byte是计算机最基础的存储单位和最基础的通讯单位。 而所有的类型都是支持由byte[]类型转换而来。 为什么说Byte是最基础类型那, 其实这里的关键所在是,计算机最基础的算法是编码,包括媒体文件、图片、各种文档以致计算机算有数据的文件展现都是字符串,而这些字符串都是由编码得来。 不管你是各种千奇百怪的字符串组成的格式,最终都要根据编码表,字符转换成相对应的十进制数字,而这相应的十进制数字那,就会存储在byte[]数组中(这里的十进制数是用来计算的,存储时会自动转换为二进制数字存储,程序计算时会按十进制计算)。 媒体文件、图片、各种文档等等—》源文件由字符串组成,多个字符—》单个字符—》十进制数字(根据相应编码)—》byte[]数组(单个字符) —》byte[]数组(多个字符) —》媒体文件、图片、各种文档等等存储单位或通讯单位。 此时这个“单个字符”二进制的长度就是根据相应编码得来的,由多个字符组成的 byte[] 就组成了 媒体文件、图片、各种文档等等的源文件。 具体如下: UTF-8 编码 :一个英文 字符 等于一个字节,一个中文(含繁体)等于三个字节。 Unicode 编码 :一个英文等于两个字节,一个中文(含繁体)等于 两个 字节。 下面可以看到 UTF-8 编码的 byte[] 数组

python对json的操作总结

孤者浪人 提交于 2019-12-20 09:39:01
  Json简介:Json,全名 JavaScript Object Notation,是一种轻量级的数据交换格式。Json最广泛的应用是作为AJAX中web服务器和客户端的通讯的数据格式。现在也常用于http请求中,所以对json的各种学习,是自然而然的事情。Python的官网网址:https://docs.python.org/2/library/json.html?highlight=json#module-json   Json API 使用:python在版本2.6之前,是需要先下载包,安装后才能使用的,有点类似现在的RF内使用SeleniumLibrary一样。但是在2.6中,官方文档(https://docs.python.org/2.6/whatsnew/2.6.html)明显指出,“有一些重要的新的软件包添加到了标准库,比如multiprocessing 和json,但是跟python 3比,2.6的这些包不会引进更多的新功能。"于是安装python2.6以上版本的童鞋,可以不需要下载json包,直接在所需的地方就import json 即可使用,在安装目录下的Lib 下,看到这两个包(点进去仔细阅读这些源码,会有更多的收获,)如下文所示:   Python2.6 以上版本支持Json的编码和解码,支持python的大部分内置类型与Json进行转换

Java web 中的HttpServletRequest对象

。_饼干妹妹 提交于 2019-12-20 09:29:15
一、HttpServletRequest介绍   HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。 二、Request常用方法 2.1、获得客户机信息    getRequestURL()方法返回客户端发出请求时的完整URL。   getRequestURI () 方法返回请求行中的资源名部分。   getQueryString () 方法返回请求行中的参数部分。   getPathInfo () 方法返回请求URL中的额外路径信息。额外路径信息是请求URL中的位于Servlet的路径之后和查询参数之前的内容,它以“/”开头。    getRemoteAddr () 方法返回发出请求的客户机的IP地址。   getRemoteHost () 方法返回发出请求的客户机的完整主机名。   getRemotePort () 方法返回客户机所使用的网络端口号。   getLocalAddr () 方法返回WEB服务器的IP地址。   getLocalName () 方法返回WEB服务器的主机名。 范例:通过request对象获取客户端请求信息 1 package gacl.request.study; 2 import java.io

转:Java中String与byte[]的转换

孤街浪徒 提交于 2019-12-20 09:07:08
转:Java中String与byte[]的转换 原文地址:http://blog.csdn.net/llwan/article/details/7567906 String s = "fs123fdsa";//String变量 byte b[] = s.getBytes();//String转换为byte[] String t = new String(b);//bytep[]转换为String 做JAVA经常会碰到中文乱码问题,还有各种编码的问题,特别是String类的内容需要重新编码的问题。要解决这些问题,必须了解清楚JAVA对于字符串是怎么处理的。 1. “字符”是由数字来表示的 先来重新了解一下计算机是如何处理“字符”的,这个原理是大家必须记住的,特别是在用JAVA写程序的时候,万万不可模糊。我们知道,计算机把任何东西都用数字来表示,“字符”也不例外。比如我们要显示一个阿拉伯数字“3”,在我们的PC里,其实并不是仅仅用一个数字3来代表我们要写的“3”,而是以十六进制的0x33来代表,包括放在内存或者是写到文件里,其实都是写着0x33的,不信你可以编辑一个文本文件,写一个“3”,然后用ultraEdit看他的原始码。 2. 一切“字符”都必定用数字+编码表表示。 这时候,有一个问题:为什么一定要用0x33来代表“3”呢?而不用0x43来代表呢?或者是直接用0x03来代替

JAVAWEB中乱码问题

早过忘川 提交于 2019-12-20 07:37:37
JavaWeb开发中乱码问题处理 其实,任何问题都是有理可循的,只要弄明白原理,由原理入手设计解决方案,很多问题也就迎刃而解了。在程序设计中,我们不仅要明白怎么做,更要知道为什么这么做,这才是提升能力的必经之路。 下面,我们来分析一下Javaweb开发中常见的乱码产生的原因及其解决方案。 响应乱码原理 服务器发送数据到浏览器,有字符和字节两种方式,这两种方式产生乱码的原理各不相同。 字节方式输出数据: response.getOutputStream( ).write("中国".getBytes("utf-8")); 发现结果为: 结果显示产生了乱码,那么这个问题是如何产生的呢? 乱码问题,大部分都是由于编码和解码码表不同产生的,服务器在发送中文数据时,使用的是UTF-8码表,那么浏览器是用什么码表解析的呢?IE浏览器在没有特别指定码表时,将使用所在操作系统的默认码表,utf-8的数据发送给浏览器后,浏览器用gbk2312打开自然就出现了乱码问题。 那么如何解决这种乱码呢?在HTTP协议中提供了Content-Type响应头,我们可以通过这个头通知浏览器发送的数据是什么格式,如果是文本数据还可以通过charset属性通知浏览器用什么编码打开,因此我们只要做如下设置即可解决乱码: response.setHeader("content-type", "text/html

python ----json数据处理

旧城冷巷雨未停 提交于 2019-12-20 03:20:59
1、什么是JSON: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。第一次接触到它是在进行服务器端接口测试的时候。现在很多服务器返回的结果都是json格式。主要是由于它比较容易解析和生成。JSON格式的数据本质上一种被格式化了的字符串。 2、Python处理JSON 用Python处理json也很简单,Python自带有json模块。可以对python对象与json字符串进行相互转换。 2.1、编码 json.dumps()把一个Python对象编,码转换成Json字符串。 举个例子: >>> import json >>> python_obj = [[1,2,3],123,123.123,'abc',{'key1':(1,2,3),'key2':(4,5,6)},True,False,None] >>> json_str=json.dumps(python_obj) >>> print json_str [[1, 2, 3], 123, 123.123, "abc", {"key2": [4, 5, 6], "key1": [1, 2, 3]}, true, false, null] 1 2 3 4 5 通过输出的结果可以看出,简单类型的python对象通过encode之后跟其原始的repr()输出结果非常相似

Python基础

二次信任 提交于 2019-12-19 14:09:12
Python的语法比较简单,采用缩进方式,写出来的代码就像下面的样子: a = int(input()) if a >= 0 : print(a) else : print(-a) 以#开头的语句是注释,注释是给人看的,可以是任意内容,解释器会忽略掉注释。其他每一行都是一个语句,当语句以冒号:结尾时,缩进的语句视为代码块。 缩进有利有弊。好处是强迫你写出格式化的代码,但没有规定缩进是几个空格还是Tab。按照约定俗成的管理,应该始终坚持使用4个空格的缩进。 缩进的另一个好处是强迫你写出缩进较少的代码,你会倾向于把一段很长的代码拆分成若干函数,从而得到缩进较少的代码。 缩进的坏处就是“复制-粘贴”功能失效了,这是最坑爹的地方。当你重构代码时,粘贴过去的代码必须重新检查缩进是否正确。此外,IDE很难像格式化Java代码那样格式化Python代码。 最后,请务必注意,Python程序是大小写敏感的,如果写错了大小写,程序会报错。 小结 Python使用缩进来组织代码块,请务必遵守约定俗成的习惯,坚持使用4个空格的缩进。 在文本编辑器中,需要设置把Tab自动转换为4个空格,确保不混用Tab和空格。 数据类型 整数 有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2 a = 0xa print(a) 浮点数 科学计数法表示

哈夫曼树

孤街浪徒 提交于 2019-12-19 12:38:18
1、哈夫曼树的基本概念 ---- 哈夫曼(Huffman)树又称作最优二叉树,它是n个带权叶子结点构成的所有二叉树中,带权路径长度最小的二叉树。 ---- “路径”就是从树中的一个结点到另一个结点之间的分支构成的部分,而分支的数目就是路径长度。 ---- 树的路径长度:就是从树根到每一结点的路径长度之和。 ---- 考虑带权的结点,结点的带权路径长度为:从该结点到树根之间的路径长度与结点上权的乘积。 ---- 树的带权路径长度WPL(weighted path length):树中所有叶子结点的带权路径长度之和。 假设一个有n个带权叶子结点的二叉树,其权值为{w1,w2,....wn},每个叶子结点带权wk,每个叶子的路径长度为 lk,则从根结点 到各个叶子结点的路径长度与相应的权值的乘积之和叫做二叉树的带权路径长度,通常记作: 如下图所示是由4个叶子结点构成的三棵不同的带权二叉树: 三棵二叉树的带权路径长度为: (a)WPL=9x2+4x2+5x2+2x2=18+8+10+4=40 (b)WPL=9x1+5x2+4x3+2x3=9+10+12+6=37 (c)WPL=4x1+2x2+5x3+9x3=4+4+15+27=50 其中(b)所示的二叉树的WPL最小,此树是哈夫曼树。由上图可知:由n个带权叶子结点所构成的二叉树中,满二叉树或完全二叉树 不一定是最优二叉树

哈夫曼树

断了今生、忘了曾经 提交于 2019-12-19 12:37:43
http://sjjg.js.zwu.edu.cn/SFXX/shu/shu4.6.2.html 1. 哈夫曼树的基本概念   哈夫曼树( Huffman )又称最优二叉树,是一类带权路径长度最短的树,有着广泛的应用。   在讨论哈夫曼树之前首先需要弄清楚关于路径和路径长度的概念。树中两个结点之间的路径由一个结点到另一结点的分支构成。两结点之间的路径长度是路径上分支的数目。树的路径长度是从根结点到每一个结点的路径长度之和。   设一棵二叉树有 n 个叶子结点,每个叶子结点拥有一个权值W 1 ,W 2 , ...... W n ,从根结点到每个叶子结点的路径长度分别为 L1 , L2......Ln ,那么树的带权路径长度为每个叶子的路径长度与该叶子权值乘积之各。通常记作 WPL = L k. W k 。为了直观其见,在图中把带权的叶子结点画成方形,其他非叶子结点仍为圆形。请看图 6.21 中的三棵二叉树以及它们的带权路径长。 (a) wpl=38 (b) wpl=49 (c) wpl=36 图 6.21 具有不同带权路径长度的二叉树 注意: 这三棵二叉树叶子结点数相同,它们的权值也相同,但是它们的 wpl 带权路径长各不相同。图 6.21(c)wpl 最小。它就是哈曼树,最优树。哈夫曼树是,在具有同一组权值的叶子结点的不同二叉树中,带权路径长度最短的树。也称最优树。 2.

OpenCV视频篇——视频文件格式--视频封装格式--视频编码格式区分

孤人 提交于 2019-12-19 04:32:59
目录 一、前言 二、视频文件格式(文件格式) 三、视频封装格式(视频格式) 1、AVI 2、QuickTime 3、高级流格式文件 4、RealVideo 5、NAVI 6、DivX 7、MPEG 四、视频编码 1、MPEG系列 2、H.26X系列 五、音频编码 六、视频像素编码 七、音频采样数据 一、前言 什么是影片?其实就是一组(很多张)图片,时间间隔很小的连续展示出来,人们就觉得画面中的人物在动,这就是影片。 那电影的实质就是N多张图片的集合。那每张图片和帧又有什么关系呢? 事实上,如果一部影片里面的图片,我们原封不动的全部存起来,空间会很大很大很大,但是如果通过一定的算法(这里不讲相关算 法),把每一张图片压缩(编码_encode)一下,变成帧。再把帧连起来变成流,再把不同的流放到某个容器里面,这就是我们平常看见的电影文件了. 文件 碟中谍4.H264.ACC.mkv,他为什么要这样命名呢? mkv表达了它的容器是.mkv的,且包含至少两个流,h264的视频流,ACC的音频流。这是一种典型的 牺牲时间来换取空间的做法。 二、视频文件格式(文件格式) 视频文件格式是指 视频保存的一种格式 ,视频是现在电脑中多媒体系统中的重要一环。为了适应储存视频的需要,人们设定了不同的视频文件格式来把视频和音频放在一个文件中,以方便同时回放。 Windows系统中文件名都有后缀,例如1