byte与string之间的相互转换

 

实现unsigned char 数组与string之间的相互转换

   1: #include <iostream>
   2: #include <string>
   3: #include <stdlib.h>
   4:  
   5: using namespace std;
   6: typedef unsigned char byte;
   7:  
   8: ////-------------------------------------------
   9: //// 将字符串类型转换为BYTE数组
  10: ////-------------------------------------------
  11: byte * HexStrToByte(string str_arr, byte byte_arr[])
  12: {
  13:     unsigned char ch1;
  14:     unsigned char ch2;
  15:     byte mybyte[str_arr.length() / 2];
  16:     int k = 0;
  17:     for (int i=0; i<str_arr.length(); i = i+2)
  18:     {
  19:         ch1 = str_arr.at(i);
  20:         ch2 = str_arr.at(i+1);
  21:         if (ch1>=48 && ch1 <= 57)
  22:         {
  23:             ch1 &= 0x0F;
  24:         }
  25:         if (ch1>='A' && ch1 <='F')
  26:         {
  27:             ch1 &= 0x0F;
  28:             ch1 += 0x09;
  29:         }
  30:         if (ch2 >= 48 && ch2 <= 57)
  31:         {
  32:             ch2 &= 0x0F;
  33:         }
  34:         if (ch2>='A' && ch2 <='F')
  35:         {
  36:             ch2 &= 0x0F;
  37:             ch2 += 0x09;
  38:         }
  39:         ch1<<=4;
  40:         byte_arr[k] =(byte)(ch1 + ch2);//int类型转byte类型,有问题
  41:         mybyte[k] = (byte)(ch1 + ch2);
  42:         
  43:         k++;
  44:     }
  45:     return mybyte;
  46: }
  47:  
  48: ////-------------------------------------------
  49: //// 将BYTE数组转换为字符串类型
  50: ////-------------------------------------------
  51: string* byteToHexStr(byte byte_arr[], int arr_len)
  52: {
  53:     string* hexstr = new string;
  54:     for(int i=0; i<arr_len; i++)
  55:     {
  56:         char hex1;
  57:         char hex2;
  58:         int value = byte_arr[i];
  59:         int v1 = value/16;
  60:         int v2 = value % 16;
  61:         //将商转换为字母
  62:         if (v1>=0 && v1<=9)
  63:         {
  64:             hex1 = (char)(48 + v1);
  65:         }
  66:         else
  67:         {
  68:             hex1 = (char)(55 + v1);
  69:         }
  70:         //将余数转成字母
  71:         if (v2>=0 && v2<=9)
  72:         {
  73:             hex2 = (char)(48 + v2);
  74:         }
  75:         else
  76:         {
  77:             hex2 = (char)(55 + v2);
  78:         }
  79:         //将字母连成一串
  80:         *hexstr = *hexstr + hex1 + hex2;
  81:     }
  82:     return hexstr;
  83: }
  84:  
  85: int main()
  86: {
  87:     int size = 128;
  88:     byte temp[size];
  89:     int len = sizeof(temp) / sizeof(byte);
  90:     cout << "The length is : " << len << endl;
  91:     cout << "The temp is : " << temp << endl << endl;
  92:     cout << "-------------------" << endl;
  93:     
  94:     for(int i = 0; i < len; i++)
  95:     {
  96:         temp[i] = i+1;
  97:     }
  98:     
  99:     cout << temp << endl;
 100:     cout << "----------------------" << endl;
 101:     byte test[] =  {0x01, 0x01, 0x02, 0xe4, 0x71, 0x2b, 0x5f, 0x30};
 102:     cout << test << endl;
 103:     for(int i = 0; i < 8; i++)
 104:         cout << test[i] << " ";
 105:     cout << endl;
 106:     cout << "----------------------" << endl;
 107:     
 108:     
 109:     byte b[]={104,1,2,3,4,5,6,104,81,0,10,6,10,17,10,0,6,10,17,10,0,150,22};
 110:     //string s=System.Text.Encoding.Default.GetString(b);
 111:     int size1 = sizeof(b) / sizeof(byte);
 112:     string str = * byteToHexStr(b, size1);
 113:     
 114:     cout << "The string length is : " << str.length() << endl;
 115:     cout << "The byte length is : " << sizeof(b)/sizeof(byte) << endl;
 116:     cout << "The string is : " << str << endl;
 117:     
 118:     byte bs[size];
 119:     byte * bs2 = HexStrToByte(str, bs);
 120:     for(int i = 0; i < 23; i++)
 121:         cout << (int) bs[i] ;
 122:     cout << endl;
 123:     
 124:     //byte bs[]=System.Text.Encoding.Default.GetBytes(s);
 125:     if(b == bs2)
 126:         cout << "The two byte are the same!" << endl;
 127:     else cout << "The two byte are not the same!" << endl;
 128:     
 129:     
 130:     return 0;    
 131: }

你可能感兴趣的:(byte与string之间的相互转换)