这里使用BitConverter进行数据的序列化与反序列化把int,float,string各种变量封装成一个byte进行通信。 ; } static public Packet operator +(Packet self, float tmp) { byte[] bufByte = BitConverter.GetBytes } static public Packet operator +(Packet self, ushort tmp) { byte[] bufByte = BitConverter.GetBytes 0) { byte[] bufByte = MyBitConverter.GetBytes(tmp); byte[] bufLen = BitConverter.GetBytes int iOffset = 4; if (m_iPos + iOffset <= m_buf.Length) { tmp = BitConverter.ToInt32
也就是说BitConverter类对字节数组和基本的数据类型进行相互转换。 \n"); Console.WriteLine( "IsLittleEndian: {0}", BitConverter.IsLittleEndian ); } } /* This example of the BitConverter.IsLittleEndian field generates the following output when 代码如下: byte[] bytes = BitConverter.GetBytes(201805978); Console.WriteLine("byte array: " + BitConverter.ToString Field- C# BitConverter Class-C#
关键对象 主要就是BitConverter这个对象的使用,就不用自己去写什么规则了。 (intBytes, 0); var longBytes = new Byte[] {1, 1, 0, 0, 0, 0, 0, 0}; var b = BitConverter.ToInt64(longBytes = new Byte[] {1, 1, 0, 0, 0, 0, 0, 0}; var d = BitConverter.ToDouble(doubleBytes, 0); 不足的位数需要补足。 ] float c = float.MaxValue; var floatBytes = BitConverter.GetBytes(c); //4个字节 [255,255,127,127] double d = Double.MaxValue; var doubleBytes = BitConverter.GetBytes(d); //8个字节 [255,255,255,255,255,255,239,127
C# 字节数组截取 如: byte[] bt = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 方法一 截取位数规则 1)截取2位长度的字节数组 用BitConverter.ToInt16 例如,从第2位开始截取2个字节则 BitConverter.ToInt16(bt,2); 2)截取4位长度的字节数组 用BitConverter.ToInt32 例如,从第3位开始截取4个字节则 BitConverter.ToInt32(bt,3); 3)截取8位长度的字节数组 用BitConverter.ToInt64 例如,从第4位开始截取8个字节则 BitConverter.ToInt64
); } set { byte[] _Value = BitConverter.GetBytes uint Height { get { return BitConverter.ToUInt32 ); } set { byte[] _Value = BitConverter.GetBytes uint Width { get { return BitConverter.ToUInt32 ); } set { byte[] _Value = BitConverter.GetBytes
] Guid2Int(Guid value) { byte[] b = value.ToByteArray(); int bint = BitConverter.ToInt32 (b, 0); var bint1 = BitConverter.ToInt32(b, 4); var bint2 = BitConverter.ToInt32 (b, 8); var bint3 = BitConverter.ToInt32(b, 12); return new[] {bint, bint1, bint2 (value).CopyTo(bytes, 0); BitConverter.GetBytes(value1).CopyTo(bytes, 4); BitConverter.GetBytes (value2).CopyTo(bytes, 8); BitConverter.GetBytes(value3).CopyTo(bytes, 12); return
//创建一个字节缓存 List<byte> bytes = new List<byte>(); //已知:0-3,传感器1 byte[] bytes_float = BitConverter.GetBytes (1.1f); //添加到缓存 bytes.AddRange(bytes_float); //已知:4-7,传感器2 byte[] bytes_int = BitConverter.GetBytes (66); //添加到缓存 bytes.AddRange(bytes_int); //已知:8-15,传感器3 byte[] bytes_double = BitConverter.GetBytes (3.1415d); //添加到缓存 bytes.AddRange(bytes_double); //已知:16,传感器4 byte[] bytes_bool = BitConverter.GetBytes info.DataType) { case DataType.Bool: //一个字节 item.SetValue(test, BitConverter.ToBoolean
MD5 相信是非常容易的事情吧, 但是随便在网上搜一搜发现流传的版本还不少呢,比如: 1、StringBuilder 版本(应该算是官方版本了,使用的人最多,我发现在 ABP 中也是使用的这个 2、BitConverter in hashBytes) { sb.Append(hashByte.ToString("X2")); } return sb.ToString(); } BitConverter 版本 public static string Md5_BitConverter(string input) { using var md5 = MD5.Create(); var inputBytes = Encoding.UTF8.GetBytes(input); var hashBytes = md5.ComputeHash(inputBytes); return BitConverter.ToString output += hashByte.ToString("X2"); } return output; } public static string Md5_BitConverter
(buffer, i); uint B = BitConverter.ToUInt32(buffer, i + 4); uint C = BitConverter.ToUInt32(buffer, i + 8); uint D = BitConverter.ToUInt32(buffer, i + 12); BitConverter.GetBytes(C).CopyTo(buffer, i + 8); BitConverter.GetBytes(D).CopyTo(buffer BitConverter.ToUInt32(buffer, i + 8); uint D = BitConverter.ToUInt32(buffer, i + 12); BitConverter.GetBytes(C).CopyTo(buffer, i + 8); BitConverter.GetBytes(D).CopyTo(buffer
(item.DaysFrom1970); list.AddRange(bytes); bytes = BitConverter.GetBytes(item.OpenPrice (bytes); bytes = BitConverter.GetBytes(item.LowPrice); list.AddRange(bytes); bytes = BitConverter.GetBytes(item.ClosePrice); list.AddRange(bytes); bytes = BitConverter.GetBytes (item.PrvClosePrice); list.AddRange(bytes); bytes = BitConverter.GetBytes(item.Volume ); list.AddRange(bytes); bytes = BitConverter.GetBytes(item.Turnover); list.AddRange
(data, 0);//数据包大小,低字节在前面,高字节在后面 isPass = BitConverter.ToInt32(data, 4);//人证核验结果 nameL = BitConverter.ToInt32(data, 8);//姓名长度 name = Encoding.UTF8.GetString(data, 12, nameL );//姓名 ethnicL = BitConverter.ToInt32(data, 12 + nameL);//民族长度 ethnic = Encoding.UTF8 .GetString(data, 16 + nameL, ethnicL);//民族 sexL = BitConverter.ToInt32(data, 16 + nameL + nameL + ethnicL + sexL + birthdayL + adressL+ cardNoL, startTimeL);//身份证起始时间 endTimeL = BitConverter.ToInt32
= "") { MD5 md = new MD5CryptoServiceProvider(); cpuID = BitConverter.ToString "") { MD5 md2 = new MD5CryptoServiceProvider(); bIOSSerialNumber = BitConverter.ToString { MD5 md3 = new MD5CryptoServiceProvider(); hardDiskSerialNumber = BitConverter.ToString "") { MD5 md4 = new MD5CryptoServiceProvider(); netCardMACAddress = BitConverter.ToString = true; string str = ""; SHA1 sha = new SHA1CryptoServiceProvider(); str = BitConverter.ToString
db.Queryable<Test>().SingleAsync(x => x.tId == 2); log += $" name:{firstRead.tName,5} version:{BitConverter.ToString var secondRead = await db.Queryable<Test>().SingleAsync(x => x.tId == 2); if (BitConverter.ToString = BitConverter.ToString(firstRead.tTimeStamp)) { log += $" 不可重复读,version :{BitConverter.ToString(secondRead.tTimeStamp).Replace(" - ", "")}"; throw new Exception
byte1, out byte byte2) { byte2 = (byte) (number >> 8); byte1 = (byte) (number & 255); } 简单的方法 通过BitConverter 可以将大量的类转换为 byte 包括 short 的方法 short number = 42; byte[] numberBytes = BitConverter.GetBytes(number); short converted = BitConverter.ToInt16(numberBytes); 但是为了这么简单的 short 两个 byte 创建一个数组,感觉不是很好 https://stackoverflow.com
var array = new byte[] { byte.MaxValue, byte.MaxValue, byte.MaxValue }; Console.WriteLine($"Array: {BitConverter.ToString (GetArray(array))}"); Console.WriteLine($"TypeHandle of Byte[]: {BitConverter.ToString(GetTypeHandle< Marshal.Copy(head, bytes, 0, size); return bytes; } unsafe static byte[] GetTypeHandle<T>() => BitConverter.GetBytes (GetArray(array))}"); Console.WriteLine($"element 1: {BitConverter.ToString(GetAddress(ref s1))}"); Console.WriteLine ($"element 2: {BitConverter.ToString(GetAddress(ref s2))}"); Console.WriteLine($"element 3: {BitConverter.ToString
item + "**");//遍历并输出每个字节对应的十进制数值 Console.WriteLine("\r"); Console.WriteLine(BitConverter.ToString (byt1));//将字节数组转换为字符串并输出 Console.WriteLine(BitConverter.ToString(byt1).Replace("-",""));/ /去掉连接符 sNeed.Append(BitConverter.ToString(byt1).Replace("-", "")); Console.WriteLine (sNeed.ToString()); Console.WriteLine(BitConverter.ToString(strToToHexByte(sNeed.ToString
(item.Value); var updateTimeBuffer = BitConverter.GetBytes(item.UpdateTime); GetTags(byte[] buffer, ref int index) { var count = BitConverter.ToInt32(buffer, index); GetMembers(byte[] buffer, ref int index) { var count = BitConverter.ToInt32(buffer, index 和BitConverter.ToXXX获取或设置基本数据类型的byte[]数据,对于多byte[]的复制,如果数据较小,用Array.Copy,如果数据较大建议用Buffer.BlockCopy。 str) { if (string.IsNullOrEmpty(str)) { return BitConverter.GetBytes(
//白色 wb.Pixels[wb.PixelWidth * y + x] = BitConverter.ToInt32 (BitConverter.GetBytes(0xffffffff), 0); } //黑色 wb.Pixels[wb.PixelWidth * y + x] = BitConverter.ToInt32 (BitConverter.GetBytes(0xff000000), 0); } }
= null && data.Length >= 2) { return BitConverter.ToInt16(data, 0); } = null && data.Length >= 4) { return BitConverter.ToInt32(data, 0); } = null && data.Length >= 2) { ushort wordData = BitConverter.ToUInt16(data, 0); = null && data.Length >= 2) { return BitConverter.ToInt16(data, 0); } = null && data.Length >= 2) { // 验证数据是否在合理范围内 short value = BitConverter.ToInt16
/// public static int Next() { rngp.GetBytes(rb); int value = BitConverter.ToInt32 最大值</param> public static int Next(int max) { rngp.GetBytes(rb); int value = BitConverter.ToInt32