字节数组

字节数组流

百般思念 提交于 2020-02-10 12:55:12
public class IOTest10 { public static void main(String[] args) throws IOException { //将指定字符串存放到byte数组中 byte[] bytes="Talk is cheap,show me the code".getBytes();//创建源 InputStream is=null;//选择流 is=new ByteArrayInputStream(bytes); byte[] bytes1=new byte[5];//每次读取5个字节 int len=-1; while((len=is.read(bytes1))!=-1){ String string=new String(bytes1,0,len);//转换成字符串 System.out.println(string); } } } public class IOTest11 { public static void main(String[] args) { byte[] dest=null;//创建源 ByteArrayOutputStream os=null;//选择流 os=new ByteArrayOutputStream();//不需要参数 String string="Talk is cheap,show me the

12:I/O流

柔情痞子 提交于 2020-02-07 04:39:51
1.流是一组有序的数据序列,根据操作的类型,可分为输入流和输出流两种。流提供了一条通道程序,可以使用次通道吧源中的字节序列送到目的地。 2.输入流:程序从执行源的输入流中读取源中的数据,源可以是文件,网络,压缩包或其他数据源。 read()方法:从输入流中读取数据的下一个字节。返回0-255范围内的int字节值,如果到达流末尾而没有可用的字节,则返回值位-1。 read(byte[] b):从输入流中读入一定长度的字节,并以证书的形式返回字节数。 mark(int realimit)方法:在输入流的当前位置放置一个标记,readlimit 参数告知此输入流在标记位置失效之前允许读取的字节数。 reset()方法:将输入指针返回到当前所做的标记处 skip(long n)方法:跳过输入流上的n个字节并返回实际跳过的字节数。 markSupported()方法:如果当前流支持mark()/reset()操作就返回true。 colse方法:关闭此输入流并释放与该流关联的所有系统资源。 3.输出流:输出流的执行是数据要达到的目的地,程序通过向输出流中写入数据吧信息传递到目的地。输出流的目标可以是文件,网络,压缩包或其他数据源。 write(int b)方法:将指定的字节写入此输出流。 write(byte[] b)方法:将b个字节从指定的byte数组写入此输出流。 write(byte[

redis 底层数据结构 压缩列表 ziplist

南笙酒味 提交于 2020-02-05 07:41:20
压缩列表是列表键和哈希键的底层实现之一。当一个列表键只包含少量列表项,并且每个列表项要么就是小整数,要么就是长度比较短的字符串,redis就会使用压缩列表来做列表键的底层实现 当一个哈希键只包含少量键值对,并且每个键值对的键和值要么就是小整数值,要么就是长度比较短的字符串,那么Redis就会使用压缩列表来做哈希键的底层实现。 压缩列表是Redis为了节约内存而开发的是由一系列特殊编码的连续内存块组成的顺序型数据结构,一个压缩列表可以包含任意多个节点,每个节点可以保存一个字节数组或者一个整数值 ziplist 数据结构 压缩列表节点的构成 每个压缩列表节点可以保存一个字节数组或者一个整数值,其中字节数组可以是以下三种长度的其中一种 长度小于等于63字节的字节数组 长度小于等于16383字节的字节数组 长度小于等于4294967295字节的字节数组 数值则可以是以下六种长度的其中一种 1: 4位长介于0至12之间的无符号整数 2:1字节长的有符号整数 3: 3字节长的有符号整数 4:int16类型整数 5:int32类型整数 6 : int64类型整数 压缩列表的数据结构 previous_entry_length 属性以字节为单位,记录了压缩列表中前一个节点的长度,previous_entry_length属性的长度可以是1字节或者5字节

使用对接字节数组流进行文件复制

偶尔善良 提交于 2020-02-05 00:03:37
·InputStream \quad 此抽象类是表示字节输入流的所有类的父类。InputSteam是一个抽象类,它不可以实例化。 数据的读取需要由它的子类来实现。根据节点的不同,它派生了不同的节点流子类,常用的如FileInputStream,ByteArrayInputStream等。 \quad 继承自InputSteam的流都是用于向程序中输入数据,且数据的单位为字节(8 bit)。 ·OutputStream \quad 此抽象类是表示字节输出流的所有类的父类。输出流接收输出字节并将这些字节发送到某个目的地。 以上流在使用完毕后要执行close来关闭流并释放与该流相关联的所有系统资源。注意,JVM不能直接对接文件,只能向操作系统申请。即JVM告知操作系统,由操作系统释放。 ·ByteArrayInputStream / ByteArrayOutputStream \quad 以字节为单位直接操作“字节数组对象”。由于操作对象为JVM可以直接管理的内存,由垃圾回收机制管理,所以无需关闭流(重写的close方法为空方法)。 import java . io . * ; public class IOTest05 { public static void main ( String [ ] args ) { byte [ ] data = fileToByteArray (

数据类型、运算符、数组、Arrays类

寵の児 提交于 2020-02-02 00:55:21
数据类型: 数据类型分为基本数据类型和引用数据类型 基本数据类型:          ①逻辑类型:boolean(1个字节)          ②整数类型: byte(1个字节,- 2^7 ~ 2^7 - 1)、short(2个字节,- 2^15 ~ 2^15 - 1)、int(4个字节,- 2^31 ~ 2^31 - 1)、long(8个字节,- 2^63 ~ 2^63 - 1)          ③字符类型:char(2个字节,0 ~ 2^16 - 1)          【char不一定是2个字节,和我们选用的字符编码有关】             (1)"ISO-8859-1"编码:一个中文字符或英文字符都只有1个字节。             (2)"UTF-8"、"GB2312"、"GBK"编码:一个英文字符都是只有1个字节。一个中文字符,"UTF-8"是3个字节,而"GBK"和"GB2312"是2个字节。             (3)"unicode"编码: 一个中文字符或英文字符 都是2个字节。          ④浮点类型:float(4个字节,8位有效数字)、double(8个字节,16位有效数字) long型变量要后缀l或L,float型变量要后缀f或F,double型变量后缀d或D可省略。 不可定义无符号的整数类型(unsigned int m)。

字节串和字节数组

↘锁芯ラ 提交于 2020-02-01 02:29:26
【容器类型:】 【字节串bytes 和 字节数组bytearray】 1byte = 8bit 11111111 = 255 最大数0xFF = 255 最小数0x00 = 0 容器类型: str 、 list 、 tuple 、 dict 、 set 、 frozenset、bytes、bytearray 字节串(bytes)(不可变的): 作用: 存储以字节为单位的数据 说明: 字节串是不可变的字节序列 字节是0~255之间的整数 字节串的表示方式: 创建空字节串的字面值: b’’ b"" b"""""" B’’ B"" B"""""" 创建非空字节串的字面值: b’ABCD’ b’\x41\x41’ 示例: >> > b = '' >> > b '' >> > type ( b ) < class 'str' > >> > b = b '' >> > b b '' >> > type ( b ) < class 'bytes' > - - - - - - - - - - - - - - - - - - - - - - >> > b 'ABCD' b 'ABCD' >> > b '\x41' b 'A' >> > b '\x41\42' b 'AB' - - - - - - - - - - - - - - - - - - - - - - - 字节串的构造函数(bytes):

关于Delphi中的字符串的浅析

谁都会走 提交于 2020-02-01 02:11:41
只是浅浅的解析下,让大家可以快速的理解字符串。 其中的所有代码均在Delphi7下测试通过。 Delphi 4,5,6,7中有字符串类型包括了: 短字符串(Short String) 长字符串(Long String) 宽字符串(Wide String) 零结尾字符串(Null-Terminated String)、PChar和字符数组 1、短字符串(Short String) 固定长度,最大字符数个数为255,短字符串也成为长度字节(Length-byte)字符串,这时因为短字符串的第0个元素包含了这个字符串的长度(字符串中字符的个数)。因此ShortString的缺省最大长度为256个字节(255个字符+1个长度字节=256),声明一个短字符串有两种方式,如下: var S: ShortString; { 255个字符长度,256个字节} S1: String[255]; { S1和S的字符类型一样} Len: Integer; begin S := 'Hello'; Len := Ord(S[0]); { Len现在包含S的长度为5,Ord函数可以把一个字符类型转换为整数类型} Len := SizeOf(S); { Len现在包含的是ShortString类型的大小,为256字节} end; 以上例子通过S[0]可以获得S的字符串长度

字节数组的大端序和小端序

不羁的心 提交于 2020-01-31 21:21:15
时间记录:2020-1-22 问题描述:在接受别人传递过来的字节数组的时候,然后发现数据和其的测试程序表现的不一致,通过打印16进制的数据来看发现,数据的顺序是颠倒的,想到了字节的顺序问题,也就是大端序和小端序。 字义解释: 数据存储在内容中,是以什么样的字节顺序,也就是指是从高位还是地位开始存储的,一般情况相下都是以小段序的来存储,也就是从低位开始存储的,但是在网络传输过程中,都是默认的以大端序来传递的,也就是从高位开始,我们再发送数据的时候回将小端序转换为大端序,然后在进行发送的操作。而有的时候由于机器的特殊性,导致到数据的顺序不一致,就需要自己进行约定操作。java中默认是以大端序来进行的 相关操作: 在java中也提供了类似的API,将自己以什么样的顺序来进行展示的操作 /** * Modifies this buffer's byte order. * * @param bo * The new byte order, * either {@link ByteOrder#BIG_ENDIAN BIG_ENDIAN} * or {@link ByteOrder#LITTLE_ENDIAN LITTLE_ENDIAN} * * @return This buffer */ public final ByteBuffer order ( ByteOrder bo ) /** *

Java 常用IO流操作详解-34

限于喜欢 提交于 2020-01-31 17:37:17
1.基本概念 IO:Java对数据的操作是通过流的方式,IO流用来处理设备之间的数据传输,上传文件和下载文件,Java用于操作流的对象都在IO包中。 2.IO流的分类 图示:(主要IO流) 3.字节流 (1).字节流基类 1).InputStream InputStream:字节输入流基类,抽象类是表示字节输入流的所有类的超类。 常用方法: // 从输入流中读取数据的下一个字节 abstract int read() // 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b中 int read(byte[] b) // 将输入流中最多 len 个数据字节读入 byte 数组 int read(byte[] b, int off, int len) // 跳过和丢弃此输入流中数据的 n个字节 long skip(long n) // 关闭此输入流并释放与该流关联的所有系统资源 void close() 2).OutputStream OutputStream:字节输出流基类,抽象类是表示输出字节流的所有类的超类。 常用方法: // 将 b.length 个字节从指定的 byte 数组写入此输出流 void write(byte[] b) // 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流 void write(byte[] b, int off,

【C语言】08-数组

 ̄綄美尐妖づ 提交于 2020-01-30 04:33:08
本文目录 地址 一、一维数组 二、二维数组 说明:这个C语言专题,是学习iOS开发的前奏。也为了让有面向对象语言开发经验的程序员,能够快速上手C语言。如果你还没有编程经验,或者对C语言、iOS开发不感兴趣,请忽略 为了让大家更好地学习和理解数组,我们先来认识一下内存中的"地址"。 回到顶部 地址 1.计算机中的内存是以字节为单位的存储空间。内存的每一个字节都有一个唯一的编号,这个编号就称为地址。凡存放在内存中的程序和数据都有一个地址,也就是说,一个函数也有自己的内存地址。 2.当定义一个变量时,系统就分配一个带有唯一地址的存储单元来存储这个变量。比如: char a = 'A'; // A的ASCII值为65 int b = 66; 在16bit编译器环境下,系统为a、b分别分配1个字节、2个字节的存储单元。变量存储单元的第一个字节的地址就是该变量的地址。 可以看出,变量a的地址是ffc3;变量b的地址是ffc1。内存中存储的都是2进制数据。 3.在调试过程中,我们采取打印的方式查看变量的地址: int c = 10; // 以16进制形式输出地址 printf("16进制:%x\n", &c); // 以10进制形式输出地址 printf("10进制:%d", &c); 输出结果: 回到顶部 一、一维数组 1.一维数组的定义 * 定义的形式为: 类型 数组名[元素个数] int