字节数组

Java io 以数组形式输入读取

匿名 (未验证) 提交于 2019-12-02 21:52:03
import java.io.FileInputStream; import java.io.IOException; public class work { public static void main ( String [] args ) throws IOException { //创建字节输入流(读文件) FileInputStream fis = new FileInputStream ( "E:\\test.txt" ); byte [] arr = new byte [ 5 ]; int i ; //读取字节个数 i = fis . read ( arr ); while ( i != - 1 ){ //判断是否读到文件末尾 System . out . print ( new String ( arr , 0 , i )); //把实际读取的i个字节 //再次读取内容 i = fis . read ( arr ); } //关闭流 fis . close (); //提示 System . out . println ( "\r\n读取完成!" ); } } //还可以 /* int i = fis.read(arr);//返回值i,表示本次读取字节的个数 System.out.println(“读取的字节个数:”+i); System.out.println(

Java字节序

匿名 (未验证) 提交于 2019-12-02 21:40:30
为什么80%的码农都做不了架构师?>>> /** * 通信格式转换 * * Java和一些windows编程语言如c、c++、delphi所写的网络程序进行通讯时,需要进行相应的转换 * 高、低字节之间的转换 * windows的字节序为低字节开头 * linux,unix的字节序为高字节开头 * java则无论平台变化,都是高字节开头 */ public class FormatTransfer { /** * 将int转为低字节在前,高字节在后的byte数组 * @param n int * @return byte[] */ public static byte[] toLH(int n) { byte[] b = new byte[4]; b[0] = (byte) (n & 0xff); b[1] = (byte) (n >> 8 & 0xff); b[2] = (byte) (n >> 16 & 0xff); b[3] = (byte) (n >> 24 & 0xff); return b; } /** * 将int转为高字节在前,低字节在后的byte数组 * @param n int * @return byte[] */ public static byte[] toHH(int n) { byte[] b = new byte[4]; b[3] = (byte)

nio

こ雲淡風輕ζ 提交于 2019-12-02 20:55:27
概述 nio是另一种处理io的方式 非阻塞io,基于缓冲区进行操作,一个线程可处理多个io请求 入门参考: http://www.iteye.com/magazines/132-Java-NIO http://www.ibm.com/developerworks/cn/education/java/j-nio/j-nio.html 和io进对比 区别 面向流和面向缓冲区 io是面向流的 nio面向缓冲区 阻塞与非阻塞 io是阻塞的 nio是非阻塞的(read方法立即返回) 线程利用 io是一个线程管理一个io请求 nio是一个线程可以管理多个io请求(通过selectors监听并选择准备就绪的通道) 通道和缓冲区(Channel和Buffer) 概述 NIO是基于通道(Channel)和缓冲区(Buffer)进行操作的 数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中 通道 通道就像io中的流一样,可以从流对象获得 区别在于通道是双向的,流只能在一个方向上移动(一个输入流,一个输出流),但一个通道可同时应用于读写请求 缓冲区 本质上是一个数组,是内存中的一小块区域,通常是一个字节数组 读取数据时,数据先读到缓冲区中,再读到通道中 写入数据时,数据先写到缓冲区中,再写到通道中 常用通道 FileChannel 文件通道 DatagramChannel UDP通道

JavaIO流之常用流总结(一)

匿名 (未验证) 提交于 2019-12-02 20:37:20
首先概述一下IO是什么   我们可以把这种数据的传输 看作是一种数据的流动,按照流动的方向,以内存为基准,分为输入input和输出output,即流向内存是输入流,输出内存的输出流   在Java中I/O操作主要是指使用其IO包下的内容进行输入,输出操作 通常 输入叫做读取数据 输出叫做写出数据   根据数据流向的不同 我们可以把其分为:输入流和输出流     输入流:把数据从其他设备上读取到内存中的流     输出流:把数据从内存中写出到其他设备上的流   根据数据的格局类型可以分为:字节流和字符流     字节流:以字节为单位 读写数据的流     字符流:以字符为单位,读写数据的流     在IO流下的两大分类都有两个祖宗倍的类       字节流中:         输入流: InputStream(字节输入流)         输出流:OutputStream(字节输出流)       字符流中:         输入流:Reader(字符输入流)         输出流:Writer(字符输出流) 先扯扯字节流:   在面向对象思想中有“万物皆对象”,而在这里我也把字节套一套叫"一切皆字节".   一切文件数据在存储时,都是以二进制数字的形式保存 都一个一个的字节 那么传输时一样如此。所以,字节流可以传输任意文件数据。所以我们时时刻刻都要明确,无论使用什么样的流对象

Java HexString-字节数组与十六进制字符数组转换

落爺英雄遲暮 提交于 2019-12-02 20:30:54
Java HexString-字节数组与十六进制字符数组转换 Java中byte(字节)用二进制表示占用8 bit (位),而我们知道16进制的每个字符需要用4位二进制位来表示,所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16进制字符H和L,并组合起来得到byte转换到16进制字符串的结果同理,相反的转换也是将两个16进制字符转换成一个byte。 比如,假设一个数组0x173A4C,可以通过展开每个十六进制数字,将它转换为二进制格式,如下所示, 十六进制 1 7 3 A 4 C 二进制 0001 0111 0011 1010 0100 1100 这样就得到了二进制表示 000101110011101001001100 反过来如果给定一个二进制数字,1111001010110110110011,可以首先把它分为每4位一组,再把它转换为十六进制。不过注意的是,如果位的总数不是4的倍数,最左边的一组可以少于4位,前面用 0 补足,然后每个4位组转换为相应的十六进制数字: 二进制 11 1100 1010 1101 1011 0011 十六进制 3 C A D B 3 根据以上原理,我们就可以将byte[]数组转换为16进制字符串了,当然也可以将16进制字符串转换为byte[]数组了。Java代码: package test;

程序员需要了解的硬核知识之内存

佐手、 提交于 2019-12-02 15:22:03
我们都知道,计算机是处理数据的设备,而数据的主要存储位置就是 磁盘 和 内存 ,并且对于程序员来讲,CPU 和内存是我们必须了解的两个物理结构,它是你通向高阶程序员很重要的桥梁,那么本篇文章我们就来介绍一下基本的内存知识。 什么是内存 内存(Memory)是计算机中最重要的部件之一,它是程序与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存对计算机的影响非常大,内存又被称为 主存 ,其作用是存放 CPU 中的运算数据,以及与硬盘等外部存储设备交换的数据。只要计算机在运行中,CPU 就会把需要运算的数据调到主存中进行运算,当运算完成后CPU再将结果传送出来,主存的运行也决定了计算机的稳定运行。 内存的物理结构 在了解一个事物之前,你首先得先需要 见 过它,你才会有印象,才会有想要了解的兴趣,所以我们首先需要先看一下什么是内存以及它的物理结构是怎样的。 内存的内部是由各种IC电路组成的,它的种类很庞大,但是其主要分为三种存储器 随机存储器(RAM): 内存中最重要的一种,表示既可以从中读取数据,也可以写入数据。当机器关闭时,内存中的信息会 丢失 。 只读存储器(ROM):ROM 一般只能用于数据的读取,不能写入数据,但是当机器停电时,这些数据不会丢失。 高速缓存(Cache):Cache 也是我们经常见到的,它分为一级缓存(L1 Cache)、二级缓存(L2

程序员需要了解的硬核知识之内存

你说的曾经没有我的故事 提交于 2019-12-02 15:18:59
我们都知道,计算机是处理数据的设备,而数据的主要存储位置就是 磁盘 和 内存 ,并且对于程序员来讲,CPU 和内存是我们必须了解的两个物理结构,它是你通向高阶程序员很重要的桥梁,那么本篇文章我们就来介绍一下基本的内存知识。 什么是内存 内存(Memory)是计算机中最重要的部件之一,它是程序与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存对计算机的影响非常大,内存又被称为 主存 ,其作用是存放 CPU 中的运算数据,以及与硬盘等外部存储设备交换的数据。只要计算机在运行中,CPU 就会把需要运算的数据调到主存中进行运算,当运算完成后CPU再将结果传送出来,主存的运行也决定了计算机的稳定运行。 内存的物理结构 在了解一个事物之前,你首先得先需要 见 过它,你才会有印象,才会有想要了解的兴趣,所以我们首先需要先看一下什么是内存以及它的物理结构是怎样的。 内存的内部是由各种IC电路组成的,它的种类很庞大,但是其主要分为三种存储器 随机存储器(RAM): 内存中最重要的一种,表示既可以从中读取数据,也可以写入数据。当机器关闭时,内存中的信息会 丢失 。 只读存储器(ROM):ROM 一般只能用于数据的读取,不能写入数据,但是当机器停电时,这些数据不会丢失。 高速缓存(Cache):Cache 也是我们经常见到的,它分为一级缓存(L1 Cache)、二级缓存(L2

C语言-memset()

眉间皱痕 提交于 2019-12-02 09:43:06
1. memset()函数原型是extern void *memset(void *buffer, int c, int count) buffer:为指针或是数组, c:是赋给buffer的值, count:是buffer的长度. 这个函数在socket中多用于清空数组.如:原型是memset(buffer, 0, sizeof(buffer)) Memset 用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘/0’; 例:char a[100];memset(a, ‘/0’, sizeof(a)); memset可以方便的清空一个结构类型的变量或数组。 如: struct sample_struct { char csName[16]; int iSeq; int iType; }; 对于变量: struct sample_strcut stTest; 一般情况下,清空stTest的方法: stTest.csName[0]=’/0’; stTest.iSeq=0; stTest.iType=0; 用memset就非常方便: memset(&stTest,0,sizeof(struct sample_struct)); 如果是数组: struct sample_struct TEST[10]; 则 memset(TEST,0,sizeof

C# 中字符串string和字节数组byte[]的转换

半世苍凉 提交于 2019-12-02 05:39:40
string转byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str ); byte[]转string: string str = System.Text.Encoding.Default.GetString ( byteArray ); string转ASCII byte[]: byte[] byteArray = System.Text.Encoding.ASCII.GetBytes ( str ); ASCII byte[]转string: string str = System.Text.Encoding.ASCII.GetString ( byteArray ); 来源: https://www.cnblogs.com/wwwbdabc/p/11732284.html

C++中数组占用的内存计算

ε祈祈猫儿з 提交于 2019-12-02 05:38:00
在C++中int类型每个空间是4个字节,而bool类型是1个字节 所以一般能用bool就别用int,节约空间 数组占用内存的计算 a[1001][1001]的空间大小=1001*1001(数组大小)*4(字节(byte))/1024(转化为KB)/1024(MB) 来源: https://www.cnblogs.com/Larry-Zero/p/11732195.html