对了,这字段是  varbinary 字段.用 byte[] 读出来后,长度为 760 .帮忙解决.200分!!!~!~!~!~!==========================================================
欢迎您:minghao1039 可用分:3448 总信誉分:86 注销我的登录

解决方案 »

  1.   

    byte[] test = System.Text.Encoding.Unicode.GetBytes(image字段类型);
    for (int iLoop = 0;iLoop < test.Length/每行字节数;iLoop++)
    {
        byte[每行字节数] bTemp = test[iLoop*每行字节数];
        //这里我不确定bTemp是会以引用test的地址,如果不是,就要再给test赋值
        if ((bTemp[位置] == "3F") || (bTemp[位置] == "FF"))
        {
             bTemp[位置] = "00";
        } 
    }
      

  2.   

    是  varbinary字段.读出来后直接就是BYTE数组.....可是  bTemp[0] 这显示的是十进制的.并不是16进制的..3F这样的....如何?办?
      

  3.   

    我写了一个16进制和10进制互换的程序,大概400行左右,这儿贴可能肯不清楚
    要的话我发给你你可以把byte中的10进制化为16进制再做相应的修改,应该不是很难!btw:你是在开某个网络游戏的服务器吗?呵呵我同学开天堂服务器的时候也是这个问题,
    我帮他写了个16进制和10进制互换的程序,效果还不错                                              wish u good luck
                                                          Greatsft
      

  4.   

    byte[] read = {0x07,0x85,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                  0x21,0x00,0x14,0x00,0x7F,0x8F,0xBE,0x00,0x00,0x00,
                  0xE5,0x10,0x20,0x00,0x7F,0x97,0x29,0x00,0x00,0x00,
                  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
                  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
                  0x45,0x00,0x1E,0x00,0x7F,0x77,0x1D,0x80,0x00,0x00,
                  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
                  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
                  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
                  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
                  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
                  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
                  0xC4,0x00,0x03,0x00,0x00,0x00,0x00,0x80 };
    for(int row=1 ; row<=12 ; row++ )
    {
        int pos=row*10+7;
        byte b = read[pos];
        
        if(b==0x3F || b==0xFF)
        {
            b=0x00;
        }
        read[pos] = b;
    }输出:
    07852200000000000000
    210014007F8FBE000000
    E51020007F9729000000
    FFFFFFFFFFFFFF00FFFF
    FFFFFFFFFFFFFF00FFFF
    45001E007F771D800000
    FFFFFFFFFFFFFF00FFFF
    FFFFFFFFFFFFFF00FFFF
    FFFFFFFFFFFFFF00FFFF
    FFFFFFFFFFFFFF00FFFF
    FFFFFFFFFFFFFF00FFFF
    FFFFFFFFFFFFFF00FFFF
    C400030000000080是你想要的结果不?
      

  5.   

    ...我的第一贴,说的,那几行,其实是连在一起的..varbinary数据。而且,有好多记录怎么可能这么手工的来赋值?????如果自动赋值,赋的却是。十进制的值。还有。如果全是FF。。则不要修改
      

  6.   

    倒....
    那只是一个演示,你不是已经得到byte[]了么???!!!
    那就直接改喽,
    对byte[]来说十进制和16进制有什么区别么?b==63 || b==255
    b==0x3F || b==0xFF效果是一样的
      

  7.   

    晕了.说得再清楚一点....1.从数据库中....检查符合符件的记录....(固定位是否是 3F 或 FF )2.把varbinary的值读出来...
    读出来后是 byte[]数组.......r[760]    十进制的.3.现在已经可以把每组的数据更改..也就是更改数组内的每个元素的值.....但是改完了以后,如何写回到数据库中????写到  varbinary 字段里去...SQL的Convert()函数也不管用哎.C#里面,有没有把字符串转成 16进制字符的方法???比如:
    r[0]=66
    r[1]=11
    r[2]=22
    r[3]=aa
    r[4]=dd那...结合起来后就是   "0x" + r[0].tostring() + ..............但这样只是字符串啊.还是写不进去...直接用数组往里面写,也是写不进去.....
    谁有办法.
      

  8.   

    在sql语句中进行cast不行么?或者用带参数的sql语句
     xxxcommand.Parameters.Add("@img", SqlDbType.VarBinary).Value = rbyte;
      

  9.   

    补充说明:rbyte就是你修改后的byte数组。
      

  10.   

    ....你cast一下试呀.我 cast,convert都试过了.不符.
    我是要修改呀,不是新加记录.
      

  11.   

    那你用我说的第二种方法吧,带参数的sql语句。用parameters.add把byte数组添加进去。
    SqlDbType 需要引用system。data
    SqlDbtype.Varbinary对应的就是array of byte