• 字节流和结构体的转换[转]


    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Runtime.InteropServices;
    using System.Management;

    namespace Util
    {
        
    public class NetStreamUtil
        {
            
    private static byte _fillChar = 0//the fill character
            
            
    //convert string to byte array in Ascii with length is len        
            public static byte[] StringToBytes(string str, int len)
            {
                
    if (string.IsNullOrEmpty(str))
                {
                    str 
    = string.Empty;
                }
     
                
    byte[] result = new byte[len];
                
    byte[] strBytes = Encoding.Default.GetBytes(str);

                
    //copy the array converted into result, and fill the remaining bytes with 0
                for (int i = 0; i < len; i++)
                    result[i] 
    = ((i < strBytes.Length) ? strBytes[i] : _fillChar);
                
                
    return result;
            }

            
    /// <summary>
            
    /// struct转换为byte[]
            
    /// </summary>
            
    /// <param name="structObj">结构体对象</param>
            
    /// <returns>字节数组</returns>
            public static byte[] StructToBytes(object structObj)
            {
                
    int size = Marshal.SizeOf(structObj);
                IntPtr buffer 
    = Marshal.AllocHGlobal(size);
                
    try
                {
                    Marshal.StructureToPtr(structObj, buffer, 
    false);
                    
    byte[] bytes = new byte[size];
                    Marshal.Copy(buffer, bytes, 
    0, size);
                    
    return bytes;
                }
                
    finally
                {
                    Marshal.FreeHGlobal(buffer);
                }
            }

           
    /// <summary>
           
    ///  byte[]转换为struct
           
    /// </summary>
           
    /// <param name="bytes"></param>
           
    /// <param name="strcutType"></param>
           
    /// <returns></returns>
           public static object BytesToStruct(byte[] bytes, Type strcutType)   
           {   
                 
    int size = Marshal.SizeOf(strcutType);   
                 IntPtr buffer 
    = Marshal.AllocHGlobal(size);   
                 
    try   
                 {   
                    Marshal.Copy(bytes, 
    0, buffer, size);   
                    
    return Marshal.PtrToStructure(buffer, strcutType);   
                 }   
                 
    finally   
                 {   
                    Marshal.FreeHGlobal(buffer);   
                 }   
            } 

            
    /// <summary>
            
    /// IntPtr转换成byte[]
            
    /// </summary>
            
    /// <param name="dataBuf"></param>
            
    /// <param name="length"></param>
            
    /// <returns></returns>
            public byte[] ConvertToBytes(IntPtr dataBuf, int length)
            {
                
    byte[] byteBuf = new byte[length];
                Marshal.Copy(dataBuf, byteBuf, 
    0, length);
                
    return byteBuf;
            }

            
    /// <summary>
            
    /// 获得网卡号
            
    /// </summary>
            
    /// <returns></returns>
            public static string GetNetCardMacAddress()
            {
                ManagementClass mc 
    = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection moc 
    = mc.GetInstances();
                
    string str = "";
                
    foreach (ManagementObject mo in moc)
                {
                    
    if ((bool)mo["IPEnabled"== true)
                        str 
    = mo["MacAddress"].ToString();
                }
                
    return str;
            }
        }
    }
  • 相关阅读:
    算法与数据结构基础
    算法与数据结构基础
    算法与数据结构基础
    分布式系统理论进阶
    分布式系统理论进阶
    分布式系统理论基础
    分布式系统理论进阶
    分布式系统理论基础
    dht 分布式hash 一致性hash区别
    排期模板
  • 原文地址:https://www.cnblogs.com/myparamita/p/1568898.html
Copyright © 2020-2023  润新知