byte[] 数组和字符串的转换,与byte[] 数组和int类型的之间的转化

我们先来看看byte bool  int ushort  等的定义

首先时byte[]数组与string之间的转换

string 转换位byte[] 数组

string str = "1-1";
byte[] cmd = Encoding.Default.GetBytes(str);
View Code

byte[] 数组转化位string

string str = "1-1";
 byte[] cmd = Encoding.Default.GetBytes(str);
 string str1 = Encoding.Default.GetString(cmd);

将int型转化为byte[]数组

int i = 255;
byte[] intBuff = BitConverter.GetBytes(i);  

将byte[]数组转化为int

int i = 255;
byte[] intBuff = BitConverter.GetBytes(i);     // 将 int 转换成字节数组
 i = BitConverter.ToInt32(intBuff, 0);           // 从字节数组转换成 int

 2 字节序(大端字节序和小段字节序)很大程度参考了https://www.cnblogs.com/lxjshuju/p/7119370.html

网络字节序就是大端顺序,由于TCP/IP首部中全部的二进制整数在网络中传输时都要求以这样的次序,因此它又称作网络字节序。

主机字节顺序就是指相对于网络传输是的字节顺序的主机上的字节顺序。有大端表示法,小端表示法

本文中byte[]的顺序依照“大端顺序”。这句话的意思是说对于整数0x11223344

byte[0]保存0x11。byte[1]保存0x22。byte[2]保存0x33,byte[3]保存0x44

char 转化为byte[2]数组

public static byte[] CharToBytes(char c)
        {
            byte[] cmd = new byte[2];
            cmd[0] = (byte)((c & 0xff00) >> 8);
            cmd[1] = (byte)(c & 0x00ff);
            return cmd;
        }

 //byte[] 数组转化为char

 public static char getChar(byte[] arr, int index)
        {
            return (char)(0xff00 & arr[index] << 8 | (0xff & arr[index + 1]));
        }

 同理short ushort int 

long转化为byte[] 数组

 public static byte[] getByteArray(long L)
        {
            byte[] b = new byte[8];
            b[0] = (byte)(0xff & (L >> 56));
            b[1] = (byte)(0xff & (L >> 48));
            b[2] = (byte)(0xff & (L >> 40));
            b[3] = (byte)(0xff & (L >> 32));
            b[4] = (byte)(0xff & (L >> 24));
            b[5] = (byte)(0xff & (L >> 16));
            b[6] = (byte)(0xff & (L >> 8));
            b[7] = (byte)(0xff & L);
            return b;
        }

猜你喜欢

转载自www.cnblogs.com/jianjipan/p/10323662.html