zoukankan      html  css  js  c++  java
  • flex sqlite 操作blog 二进制数据

    1,              通常的操作方式:

    首先我们建立表:CREATE TABLE "pages" ("id" varchar, "data" blob),然后了使用sql 语句。

    sql = "SELECT id, CAST(data AS ByteArray) AS data FROM pages"

    flex 的代码如下:

    sql = "SELECT id, CAST(data AS ByteArray) AS data FROM pages"

     1 SQLConnection connection = new SQLConnection();
     2 var file:File = File.applicationDirectory.resolvePath("assetsdbdata.db");
     3 connection.open(file);
     4 
     5 var state:SQLStatement = new SQLStatement();
     6 state.text = sql;
     7 state.sqlConnection = connection
     8 state.execute();
     9 
    10 var result:SQLResult = state.getResult();
    11 var rows:int = result.data.length;
    12 for(var i:int =0; i < rows; i++) 
    13 {
    14     
    15     var row:Object = result.data[i];
    16     var data:ByteArray = row[data];
    17 }

    2,              特殊的处理方式:

    但是了,问题出现了,CAST(data AS ByteArray) AS data 这句,有时候,这个死活转不成bytearray,一直是0。这个问题困扰了我很久,我到adobe官网也查了半天,没有结果,最后找到sqlite 的 hex 函数。即改变sql 语句 SELECT id, hex(data) AS data FROM pages。

    Hex 函数,其实就是把sqlite blob 类型的数据转换为字符串,具体怎么转了,比如是:55ffab这样。 其实每个字符是4个字节, 那55 就表示一个Byte 了,即8字节。所以了,我写两个函数,用来转换hex 为bytearray。

    private function Hex2ByteArrayNew(hexStr:String):ByteArray
    {
        var ret:ByteArray = new ByteArray();
    
        var leng:int = hexStr.length;
        var newHexArrStr:String = "";
        var step:int = 2;
        var i:int = 0;
        
        while(i<leng)
        {
            try
            {
                //2 位一个byte
                var tempI:int = parseInt(hexStr.substr(i,step),16);
                
                ret.writeByte(tempI);
                
                i += step;
            }catch(e:Error)
            {
                trace(e);
            }
        }
        return ret;
    }

    3,              Bytearray 处理的一些技巧

    (1)       刚开始读取的时候,必须设置position = 0。

    (2)       readUnsignedByte, 以及  readDouble ,这些是读取固定字节,转换成相应的数据类型。一般使用这些方法来读取。

  • 相关阅读:
    C语言实现时间差、星期、天数算日期(转)
    windbg 源码调试设置
    Windbg调试命令详解
    突破session 0隔离 和 劫持exe注入(转自梦无极)
    debug : StartService failed, getlasterror = 0x7f(127) 转
    反调试技巧总结-原理和实现
    关于Win7 x64下过TP保护(内核层)(转)
    python将dict中的unicode打印成中文
    Python 获取接口数据,解析JSON,写入文件
    python提取网页中json数据
  • 原文地址:https://www.cnblogs.com/csharponworking/p/3349598.html
Copyright © 2011-2022 走看看