亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bitarrayoutputstream.java

?? jwap 協議 udp 可以用于手機通訊
?? JAVA
字號:
/** * JWAP - A Java Implementation of the WAP Protocols * Copyright (C) 2001-2004 Niko Bender * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */package net.sourceforge.jwap.util;import java.io.ByteArrayOutputStream;import java.util.BitSet;public class BitArrayOutputStream {    public static final boolean debug = false;    // to avoid Math.pow(2,b) take pot[b]    private static final long[] pot = {        1L, 2L, 4L, 8L, 16L, 32L, 64L, 128L, 256L, 512L, 1024L, 2048L, 4096L,        8192L, 16384L, 32768L, 65536L, 131072L, 262144L, 524288L, 1048576L,        2097152L, 4194304L, 8388608L, 16777216L, 33554432L, 67108864L,        134217728L, 268435456L, 536870912L, 1073741824L, 2147483648L,        4294967296L, 8589934592L, 17179869184L, 34359738368L, 68719476736L,        137438953472L, 274877906944L, 549755813888L, 1099511627776L,        2199023255552L, 4398046511104L, 8796093022208L, 17592186044416L,        35184372088832L, 70368744177664L, 140737488355328L, 281474976710656L,        562949953421312L, 1125899906842624L, 2251799813685248L,        4503599627370496L, 9007199254740992L, 18014398509481984L,        36028797018963968L, 72057594037927936L, 144115188075855872L,        288230376151711744L, 576460752303423488L, 1152921504606846976L,        2305843009213693952L, 4611686018427387904L, 9223372036854775807L    }; // b = 64    ByteArrayOutputStream outstream = new ByteArrayOutputStream();    int aktBit = 0;    int sByte=0;    ////////////////////////////////////////////////////////////////////////////    //////////////////// METHODS CONCERNING THE STREAM /////////////////////////    /**     * fills up the aktual byte with bits "0" for fill = false     *                                and "1" for fill = true     */    public synchronized void flush(boolean fill) {        while (aktBit != 0) {            write(fill);        }    }    public byte[] toByteArray() {        return outstream.toByteArray();    }    ////////////////////////////////////////////////////////////////////////////    //////////////////// WRITE SINGLE BITS /////////////////////////////////////    /**     * writes a bit down to the stream.     * is used by all the other methods in this class.     */    public synchronized void write(boolean b) {        if(b) {            sByte |= (1 << (7-aktBit));        }        aktBit++;        // if byte is full, write down into outstream        if (aktBit == 8) {            outstream.write(sByte);            aktBit = sByte = 0;        }    }    ////////////////////////////////////////////////////////////////////////////    //////////////////// WRITE METHODS /////////////////////////////////////////    /**     * writes <code>count</code> bits from byte <code>_b</code> beginning on the right hand.     * <code>Count</code> has NOT to be in byte-size (e.g. 8, 16, 24, 32,...)     */        public synchronized void write(byte _b, int count) {        int b = _b;        // bit #0 (encoding positive/negative numbers)        if (b < 0) {            if (count == 8) {                write(true);                count = 7;            }            b += 128;            // if _b >= 0        } else {            if (count == 8) {                write(false);                count = 7;            }        }        for (int i = 7; i >= count; i--) {            if (b >= pot[i]) {                b -= pot[i];            }        }        // bits #1 - #7        for (int i = count - 1; i >= 0; i--) {            if (b >= pot[i]) {                b -= pot[i];                write(true);            } else {                write(false);            }        }    }        // Optimized write, doesn't work yet...    private synchronized void _write(byte _b, int count) {        int b = _b&0xFF, m = 0x80;        for( int i=0; i<count; i++ ) {            write( (b & (m>>i)) != 0 );        }    }    public synchronized void reset() {        outstream.reset();        sByte = aktBit = 0;    }    public synchronized void write(int b, int count) {        // bit #0 (encoding positive/negative numbers)        if (b < 0) {            if (count == 16) {                write(true);                count = 15;            }            b += 32768;            // if b >= 0        } else {            if (count == 16) {                write(false);                count = 15;            }        }        for (int i = 15; i >= count; i--) {            if (b >= pot[i]) {                b -= pot[i];            }        }        // bits #1 - #7        for (int i = count - 1; i >= 0; i--) {            if (b >= pot[i]) {                b -= pot[i];                write(true);            } else {                write(false);            }        }    }    ////////////////////////////////////////////////////////////////////////////    //////////////////// WRITE UINT* METHODS ///////////////////////////////////    /**     * writes <code>count</code> bits of an integer into the stream beginning on the right hand.     * <code>Count</code> has NOT to be in byte-size (e.g. 8, 16, 24, 32,...)     *     * also use it for a uint8  (use bits=8)     *                or unit16 (use bits=16)     *                or uint32 (use bits=32)     * according to WAP-230-WSP-10010705-a secition 8.1.2     */    public synchronized void write(long b, int count) {        // bit #0 (encoding positive/negative numbers)        if (b < 0) {            if (count == 32) {                write(true);                count = 31;            }            b += 2147483648L;            // if b >= 0        } else {            if (count == 32) {                write(false);                count = 31;            }        }        for (int i = 31; i >= count; i--) {            if (b >= pot[i]) {                b -= pot[i];            }        }        // bits #1 - #7        for (int i = count - 1; i >= 0; i--) {            if (b >= pot[i]) {                b -= pot[i];                write(true);            } else {                write(false);            }        }    }    /**     * write a unintvar     * according to WAP-230-WSP-10010705-a secition 8.1.2     */    public synchronized void writeUintVar(long b) throws NumberFormatException {        if (b < 0) {            throw new NumberFormatException("No negative values supported");        } else if (b == 0) {            for (int i = 0; i < 8; i++) {                write(false);            }        } else {            int i = 63;            while (b < pot[i]) {                i--;            }            int length = i;            // i+1 ist jetzt die Anzahl der ben鰐igten bits            int fill = 7 - ((i + 1) % 7); //nur 7 bits payload            if (fill == 7) {                fill = 0;            }            if (debug) {                System.out.println("used bits: " + (i + 1) + " | to fill: " +                    fill);            }            // set the continue bit            if ((i + 1) <= 7) {                write(false);            } else {                write(true);            }            // fill up with "0"            for (int s = 0; s < fill; s++) {                write(false);            }            for (; i >= 0; i--) {                //write continue bit                if ((((i + 1) % 7) == 0) && (length > 7)) {                    if ((i + 1) <= 7) {                        write(false);                    } else {                        write(true);                    }                }                //write payload                if (b >= pot[i]) {                    b -= pot[i];                    write(true);                } else {                    write(false);                }            }        }    }    /**     * writes <code>count</code> bits from byte <code>_b</code> beginning on the right hand.     * <code>Count</code> has NOT to be in byte-size (e.g. 8, 16, 24, 32,...)     */    public synchronized void write(byte[] b) {        for (int i = 0; i < b.length; i++) {            this.write(b[i], 8);        }    }    /**     * writing multiple octets according to     * WAP-230-WSP-20010705-a section 8.4.2.1 "Basic rules for header syntax"     */    /*public synchronized void writeMultOct(long b) throws NumberFormatException{      if (b<0){        throw new NumberFormatException("No negative values supported");      } else if (b>127){        // LONG INTEGER ////////////////////////////////////////////////        boolean length = false;        for(int i=63; i>=0; i--){          if (b >= pot[i]){            if (length == false) {              // writing length as short integer              length = true;              long thelength=(long)(Math.ceil(((double)i+1)/8));              writeMultOct(thelength);              // fill first bits in first byte with "0"              int swap = 8-((i+1)%8);              System.out.println("i:" + i + " swap:" + swap + " length:" + thelength);              if (swap != 8){                for (int a=0; a<swap; a++){                  write(false);                }              }            }            b -= pot[i];            write(true);          }          else if(length == true){            write(false);          }        }      } else {        // SHORT INTEGER ////////////////////////////////////////////////        write(true);        // bits #1 - #7        for(int i=6; i>=0; i--){          if (b >= pot[i]){            b -= pot[i];            write(true);          } else {            write(false);          }        }      }    }    */    ////////////////////////////////////////////////////////////////////////////    //////////////////// HELPER METHODS ////////////////////////////////////////    /**     * constructs a string representation of the outputstream.     */    public synchronized String toString() {        String result = "";        byte[] array = outstream.toByteArray();        for (int i = 0; i < array.length; i++) {            result += (getBitString(array[i]) + "\r\n");        }        result+=getBitString((byte) (sByte&0xFF));        return result;    }    /**     *  Constructs a binary representation of the byte <code>m</code>     */    public static String getBitString(byte m) {        String result = "";        if (m < 0) {            result += "1";            m += 128;            // if m >= 0        } else {            result += "0";        }        for (int i = 6; i >= 0; i--) {            if (m >= pot[i]) {                m -= pot[i];                result += "1";            } else {                result += "0";            }        }        return result;    }    /**     *  Constructs a binary representation of the byte-array <code>m</code>     */    public static String getBitString(byte[] m) {        String result = "";        for (int i = 0; i < m.length; i++) {            result += (getBitString(m[i]) +            System.getProperty("line.separator"));        }        return result;    }    /**     *  Constructs a BitSet of the byte <code>m</code>     */    public static BitSet getBitSet(byte m) {        BitSet result = new BitSet(8);        if (m < 0) {            result.set(0);            m += 128;        }        for (int i = 6; i >= 0; i--) {            if (m >= pot[i]) {                m -= pot[i];                result.set(7 - i);            }        }        return result;    }    /**     * Test method     */    public static void main(String[] args) {        BitArrayOutputStream m = new BitArrayOutputStream();        //m.write(23L, 8);        //m.write(18736L, 16);        m.write("Hallo".getBytes());        /*try{          m.writeUintVar(19L);        } catch (NumberFormatException e){          e.printStackTrace();        }*/        System.out.println(m.toString());    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
粉嫩aⅴ一区二区三区四区五区 | 国产丝袜欧美中文另类| 国产日产欧美一区二区三区 | 天天射综合影视| 成人黄色片在线观看| 欧美一区二区三区视频免费播放| 久久综合av免费| 亚洲国产sm捆绑调教视频| www.亚洲色图| 国产午夜亚洲精品理论片色戒| 日韩中文字幕1| 91福利小视频| 1024成人网| 成人精品视频一区二区三区尤物| 日韩免费在线观看| 天天综合天天做天天综合| 91福利国产精品| 亚洲欧美日韩精品久久久久| 国产成人精品一区二区三区四区 | 久久精品国产一区二区| 欧美色欧美亚洲另类二区| 国产精品入口麻豆九色| 国产在线精品一区二区不卡了| 欧美日韩的一区二区| 亚洲国产另类av| 欧洲激情一区二区| 亚洲成av人片| 91福利视频在线| 亚洲一区二区三区四区在线观看 | 日韩黄色在线观看| 欧美日产国产精品| 亚洲综合色自拍一区| 在线免费观看一区| 亚洲精品国产成人久久av盗摄| 91在线精品秘密一区二区| 综合av第一页| 欧美视频一区二| 午夜久久久影院| 欧美一区二区三区电影| 免费在线观看日韩欧美| 精品国产三级电影在线观看| 国产又粗又猛又爽又黄91精品| 日韩免费电影网站| 国产一区二区三区免费观看| 精品处破学生在线二十三| 国产精品综合久久| 亚洲国产成人私人影院tom| 成人av网站免费| 亚洲精品高清在线| 欧美丰满少妇xxxbbb| 韩国av一区二区| 中文字幕在线不卡视频| 在线观看av不卡| 奇米亚洲午夜久久精品| 久久婷婷色综合| 色偷偷成人一区二区三区91| 午夜欧美在线一二页| 精品国产区一区| 色丁香久综合在线久综合在线观看| 亚洲电影第三页| 久久久亚洲欧洲日产国码αv| 91啪亚洲精品| 久久国产三级精品| 亚洲女同一区二区| 欧美成人r级一区二区三区| 成人福利视频网站| 日本特黄久久久高潮| 国产精品久久久久精k8| 678五月天丁香亚洲综合网| 国产精品一区二区果冻传媒| 一级精品视频在线观看宜春院 | 国产经典欧美精品| 亚洲精品乱码久久久久久黑人| 欧美日本不卡视频| 91丨九色丨蝌蚪丨老版| 久久成人免费网| 尤物av一区二区| 久久蜜臀精品av| 欧美二区三区的天堂| 成人av电影在线网| 久久精品99国产国产精| 亚洲一区二区三区在线播放| 国产日本亚洲高清| 欧美精品免费视频| 91免费观看视频| 国内精品免费在线观看| 亚洲成人你懂的| 中文字幕佐山爱一区二区免费| 欧美本精品男人aⅴ天堂| 在线观看国产日韩| 成年人网站91| 国产91对白在线观看九色| 日韩中文欧美在线| 亚洲午夜精品一区二区三区他趣| 中文字幕乱码一区二区免费| 91麻豆精品国产91| 欧美婷婷六月丁香综合色| 91色乱码一区二区三区| eeuss鲁片一区二区三区| 经典三级在线一区| 亚洲午夜视频在线观看| 亚洲人成精品久久久久久 | 久久亚洲综合色一区二区三区| 欧美日韩美女一区二区| 97久久超碰精品国产| 东方aⅴ免费观看久久av| 蜜桃视频一区二区三区| 麻豆精品国产91久久久久久| 男女激情视频一区| 精品一区二区综合| 久久福利视频一区二区| 久久精品av麻豆的观看方式| 精品一区二区三区免费| 另类欧美日韩国产在线| 另类欧美日韩国产在线| 老司机精品视频导航| 看片的网站亚洲| 九色|91porny| 国产精品996| 成人av片在线观看| 色婷婷国产精品综合在线观看| 一道本成人在线| 欧美日韩亚洲综合一区二区三区| 精品视频一区二区不卡| 欧美一区二区三区婷婷月色| 日韩三级电影网址| 久久美女高清视频| 国产精品久久久久久亚洲毛片 | 青青草国产精品亚洲专区无| 日本成人中文字幕在线视频 | 精品嫩草影院久久| 国产欧美日韩精品一区| 国产精品久久久久久久裸模| 伊人色综合久久天天| 日韩制服丝袜av| 国产毛片精品视频| 成人黄动漫网站免费app| 91黄色免费看| 精品免费日韩av| 国产精品久久久久永久免费观看 | 日韩激情一二三区| 国产剧情av麻豆香蕉精品| 国产999精品久久久久久绿帽| 成人av资源在线| 欧美三区免费完整视频在线观看| 欧美电影免费观看完整版| 国产精品色婷婷久久58| 婷婷成人综合网| 国产成人综合亚洲网站| av成人老司机| 日韩一级高清毛片| 亚洲视频一二区| 蜜桃91丨九色丨蝌蚪91桃色| av高清不卡在线| 日韩免费福利电影在线观看| 最新成人av在线| 精品制服美女丁香| 欧美日韩一级视频| 国产精品无圣光一区二区| 石原莉奈在线亚洲二区| 成人av网址在线| 欧美xxxx老人做受| 亚洲国产精品天堂| 99麻豆久久久国产精品免费| 日韩欧美在线观看一区二区三区| 中文字幕一区三区| 国模大尺度一区二区三区| 欧美在线不卡视频| 国产精品久久久久天堂| 精品一区二区av| 欧美一区二区三区免费在线看| 亚洲日本青草视频在线怡红院| 久久99热国产| 欧美日韩国产高清一区| 亚洲免费在线播放| 成人aa视频在线观看| 久久蜜臀精品av| 精品一区二区三区免费| 337p亚洲精品色噜噜| 亚洲电影第三页| 欧美综合在线视频| 国产精品少妇自拍| 国产激情视频一区二区在线观看| 欧美一区二区私人影院日本| 亚洲综合在线观看视频| 91蝌蚪porny| 亚洲人成小说网站色在线| av亚洲精华国产精华精华| 欧美国产精品一区二区| 国产91富婆露脸刺激对白| 久久久蜜桃精品| 国产精品白丝jk白祙喷水网站| 精品福利二区三区| 国产美女久久久久| 亚洲精品一区二区三区在线观看| 蜜臀a∨国产成人精品| 欧美大片免费久久精品三p| 日本在线不卡视频| 欧美疯狂做受xxxx富婆| 免费人成网站在线观看欧美高清|