无题,李商隐,哈哈哈,随便写写

  1. 之前一直记着一个汉字是占两个字节,今天发现不是这样的,utf-8编码一个汉字是3个字节,以下为代码证明(GBK是一个汉字两个字节,这个没做实验)

    1 RandomAccessFile ra = new RandomAccessFile("F:\\text.txt", "rw");
    2 FileChannel fc = ra.getChannel();
    3         ByteBuffer bb = ByteBuffer.allocate(6);
    4         String encoding = System.getProperty("file.encoding");
    5         fc.read(bb);
    6         bb.flip();
    7 System.out.println("decode using " + encoding + ":" + Charset.forName(encoding).decode(bb) + "  position当前位置:"
    8                 + bb.position() + " limit:" + bb.limit() + " capa:" + bb.capacity());
    
    打印结果:    decode using UTF-8:中文  position当前位置:6 limit:6 capa:6

    由此可以看出一个中文的utf-8编码为3字节,如果不使用decode方法,bb.getChar()方法得到的是乱码,decode的方法针对的是缓冲器,无法 对其中的部分字节decode

  2. ByteBuffer的get()方法会使position后移一位,但指定索引时即get(i),position位置不变
  3. 从下面程序可以看出get()一次取得一个字节,那么,但char类型不应该是两个字节吗,应该一次取得两个字节才对,我看到网上也有人对此有误解
  4. System.out.println((char)bb.get() + " position当前位置:" + bb.position() +" limit:"+
             bb.limit() + " capa:" + bb.capacity());
    
    打印结果 :     a position当前位置:1 limit:3 capa:6

    实际上取得是一个字节没错,但这里是类型转换 ,把byte转换为char,空位以0补齐,所以得到的结果是a,  一个字节表示范围从-128到127,a的对应数字是97,所以一个字节完全可以表示,但char的类型确实是两个字节,但从文件中读取的是byte,并不是按照char类型来读取,只是后来强制转换了

时间: 2024-08-07 16:44:59

无题,李商隐,哈哈哈,随便写写的相关文章

2016 - 1- 24 随便写写~~

反正也没什么人看 就随便写写吧~ 我是从来没想过我可能会成为一个码农的,虽然我现在很讨厌这个词啊哈哈哈. 说实话,直到今天我都觉得自己大学生活过的好失败,什么都没学到,白白浪费了三年多的光阴.好像从来没发现过什么东西可以吸引到我.除了游戏啊哈哈哈. C语言都挂了两次,我怎么可能敲得好代码呢?对吧? 但是真是接触到了 我才发现我多么热爱这个东西,我觉得面向对象的编程真的好美好方便啊哈哈 无论怎么自己也算迈出了第一步吧,也许我这辈子也到不了能到顶尖大牛的水准,但是我觉得我做一些我热爱的东西,起码生活

第一天,随便写写

今天都干了什么? 1. cocos2dx 动画类. 2. DES加密算法. 3. linux的硬件检测命令. 明天总结下,把Eclipse+Cocos2dx的开发环境搭建过程写出来. 第一天,随便写写,布布扣,bubuko.com

没有什么,开发ASP.NET时随便写写,想到什么写什么

没有什么,开发ASP.NET时随便写写,想到什么写什么,这次想写点开发过程中,比如在数据库,某一张表中有一个字段,如下: 上面代码示例中高亮字段,数据类型为BIT,它存储的值将为"True"或"False". 在前端aspx网页上,我们用一个形式来呈现友好的控件.一般来说,存储boolean值,一般使用CheckBox控件,选中得到为True,反之得到为False,这个是较理想的.但是现这里是要呈现性别,男或女.那就不能使用CheckBox控件了.最接近此要求,也许

随便写写2014创业记(二)

这篇文章既然已经开始写了,那就坚持写完吧.可能文章中有很多不符合各位胃口的,请暂且不要去理会其是不是做错了还是做对了,经过这么长的时间我明白一个很简单的道理,只要你做事情就肯定会有错的地方或者不如意的地方. 四. 坚持 每次出去户外下山之后心里总是给自己说一句"我活在回来了",这话当然有点夸张.2014年这一年我很庆幸的说"我们公司活下来了".对于2014年上半年来说是痛苦的半年,去年展望的美好全在今年上半年破灭.基本上过年前后属于一个市场淡季,很多项目接洽工作都没

随便写写2015创业记(三)

文章虽然叫随便写写,但是这部文章我真的不想随便写写,很早之前作为一个技术员,然后又作为一个创业者我只想说说自己的感悟以及自己的迷茫.想褪去所有的角色好好的谈谈自己,作为一个普普通通的人来说说自己心中的想法. 一. 每一个创业技术大神最后都回来上班了 这句话真的有点讽刺了,这是前几天看到博客园中某个大神写的一篇文章的留言,然后我也就Copy回复了一下,楼主回复"你们知道的太多了".这只是一个玩笑话,但这的的确确是一个不争的事实,很多的技术创业者最终都放弃了,最终还是选择了回来写代码干程序

没有什么,开发ASP.NET时随便写写,想到什么写什么(转)

没有什么,开发ASP.NET时随便写写,想到什么写什么,这次想写点开发过程中,比如在数据库,某一张表中有一个字段,如下: 上面代码示例中高亮字段,数据类型为BIT,它存储的值将为"True"或"False". 在前端aspx网页上,我们用一个形式来呈现友好的控件.一般来说,存储boolean值,一般使用CheckBox控件,选中得到为True,反之得到为False,这个是较理想的.但是现这里是要呈现性别,男或女.那就不能使用CheckBox控件了.最接近此要求,也许

随便写写2014创业记(一)

2014尽头已在眼前,似乎我要写些什么东西来留住这2014美好的一年.其实在去年(2013)年底的时候就想写些什么,但是又不知道从何去去写,写多了反而觉得有些做作.人的记忆是有限的,于是在这个稍微闲暇的时刻还是写写吧,分享给在一线工作的 "软件工程师" (行业中各自嘲讽多年的"码农"有时候也需要一个庄重而严肃的称呼,表达我对职业的尊敬). 一. 打工 上一份工作离职是去年的7月份了,离职是带着一年多的失望和光阴的虚度而离开的,为此我懊悔了很久很久.我是一个危机感非常

随便写写

这个周末安排得挺满的,突然想用java写一个小游戏玩.java学得一般,知道一些基础的知识,做java项目做得很少,于是我从星期六上午开始跟着老师一起开始学习用java开发一个小游戏——雷电.首先用JFrame和JPanel类写,创建画板,设置各种参数,例如窗口大小,是否关闭,显示,位置.添加画布,设置画布背景,添加飞机的图片.种种不赘叙,功能越来越复杂,写到200多行,感觉有点吃力,各种代码找不到(这点主要是自己的一些注释写得太差,代码阅读感差),从添加线程用键盘控制飞机,按键发射子弹,子弹和

随便写写,当作了解--Css

Css,Cascading Style Sheets,层叠样式表.用于控制HTML页面样式.他的基本格式由两部分组成: 选择器 声明块 一.使用 css的注释用 /* 注释内容 */ 1.导入外部样式表 <link rel=”stylesheet”type=”text/css”href=”myCss.css”media=”all”/> rel:表示关系,这里的关系是“stylesheet”:如果将rel定义为“alternate  stylesheet”,他就为候选样式表,利用title属性生