Flutter list int 类型转文字

我们在使用Socket进行请求的时候  接收到的返回值一般也是list类型  有时候需要转换成字符串   所以自己写了一个工具类

下面我贴出方法   供大家参考

1将List转换为int值

    //将数组转换成int值  一般接收的时候需要
    // ignore: missing_return
    int  listToValue(List data){
    //data  [a0,a1]
        switch(data.length){
          case 2:
            return (data[1]<<8)+data[0];

            break;
          case 4:
            return data[0]+(data[1]<<8)+(data[2]<<16)+(data[3]<<24);

            break;
          case 8:
            return data[0]+(data[1]<<8)+(data[2]<<16)+(data[3]<<24)+
                (data[4]<<32)+(data[5]<<40)+(data[6]<<48)+(data[7]<<56);

            break;

          case 16:
            return data[0]+(data[1]<<8)+(data[2]<<16)+(data[3]<<24)+
                    (data[4]<<32)+(data[5]<<40)+(data[6]<<48)+(data[7]<<56)+
                    (data[8]<<64)+(data[9]<<72)+(data[10]<<80)+(data[11]<<88)+
                    (data[12]<<96)+(data[13]<<104)+(data[14]<<112)+(data[15]<<116);

            break;

        }
    }

2.因为每个公司的业务不同  所以  大家按照自己公司的业务来截取对应位置的数据 


    //将unicode或ascii编码类型的list(编码格式 长度 字符串内容)转换为String字符串
    String unicodeOrAsciiList2String(List data){
           //获取字符串长度对应的数据
         List lengthList= data.sublist(1,3);
            //获取字符串长度的int值
         int length=listToValue(lengthList);
         if(length==0){     //长度为0
           return '';
         }else{             //长度不为0  
          List strList= data.sublist(3,data.length);
          String result='';
           if(data[0]==1){       //ASCII编码
                strList.forEach((value){
                    result+=String.fromCharCode(value);
                });
                return result;
           }else if(data[0]==2){ //UNICODE编码
              for(int i=0;i current=  strList.sublist(i*2,(i+1)*2);
                result+=String.fromCharCode(listToValue(current));
              }
              return result;
           }
         }
    }


   //字符串转ascii编码数组
    List str2AsciiList(String text){
      List temp=text.codeUnits;
      List result=[];
      List lengthList= HexadecimalConversionUtils().valueToList(temp.length, 2);
      result..add(1)..addAll(lengthList)..addAll(temp);  //编码格式  长度  内容
      return result;
    }




    //将字符串转换为unicode格式的   编码格式  长度  字符串内容 形式的list集合
    List str2unicodeList(String text){
      List temp=text.codeUnits;
      List textList=List();
      List result=[2];  //unicode编码
        for(int i=0;i charList= valueToList(temp[i],2);
           charList.reversed;
           textList.addAll(charList);
        }
      List  textLengthList=valueToList(textList.length, 2);
        result..addAll(textLengthList)..addAll(textList);
        return result;
    }

HexadecimalConversionUtils:

 //将一个Int值转化为数组  一般发送时候需要
      // ignore: missing_return
      List valueToList(int value,int length){
       switch(length){
         case 2:
            int a0=value&0xff;
            int a1=(value>>8)&0xff;
           return [a0,a1];

           break;
         case 4:
           int a0=value&0xff;
           int a1=(value>>8)&0xff;
           int a2=(value>>16)&0xff;
           int a3=(value>>24)&0xff;
           return [a0,a1,a2,a3];

           break;
         case 8:
           int a0=value&0xff;
           int a1=(value>>8)&0xff;
           int a2=(value>>16)&0xff;
           int a3=(value>>24)&0xff;
           int a4=(value>>32)&0xff;
           int a5=(value>>40)&0xff;
           int a6=(value>>48)&0xff;
           int a7=(value>>56)&0xff;
           return [a0,a1,a2,a3,a4,a5,a6,a7];

           break;

       }
    }

 

你可能感兴趣的:(Flutter,Dart)