2016-04-06 3 views
5

में मैट पता को बाइट सरणी में कनवर्ट करें मेरे पास एक स्ट्रिंग, "b8:27:eb:97:b6:39" के रूप में एक साधारण मैक पता है, और मैं इसे सी # कोड में एक बाइट सरणी, [184, 39, 235, 151, 182, 57] में प्राप्त करना चाहता हूं।सी #

तो मैं उसे विभाजित निम्नलिखित के साथ:

var split = str.Split(':'); 
byte[] arr = new byte[6]; 

और फिर मैं for -loop किसी प्रकार की जरूरत है प्रत्येक सबस्ट्रिंग उन्हें एक 16-बिट पूर्णांक में बदल लेने के लिए। मैंने Convert.ToInt8(split[i]), split[i].ToChar(0,2), (char)split[i] की कोशिश की, लेकिन मैं यह नहीं समझ सकता कि स्ट्रिंग-वर्णों को कैसे लेना है और उन्हें एक 8-बिट संख्या होने दें।

उत्तर

7

ये रहा

string mac = "b8:27:eb:97:b6:39"; 
byte[] arr = mac.Split(':').Select(x => Convert.ToByte(x, 16)).ToArray(); 
+0

दिन का उत्तर! धन्यवाद। –

+1

@ रasmसबेकगार्ड आपका स्वागत है :) – fubo

0

आप नेट ढांचे के Byte.Parse विधि का उपयोग करने की जरूरत है।

byte value = Byte.Parse(split[1], NumberStyles.AllowHexSpecifier); 
3

मैं PhysicalAdress वर्ग के बजाय उपयोग करने का सुझाव यह अपने आप कर रही।

यह एक पार्स विधि है:

PhysicalAdress.Parse("b8:27:eb:97:b6:39").GetAdressBytes(); 

संदर्भ: https://msdn.microsoft.com/library/system.net.networkinformation.physicaladdress.parse(v=vs.110).aspx

लेकिन जैसे विधि केवल - बाइट विभाजक के रूप में स्वीकार करता है यह असफल हो जायेगी। एक सरल विस्तार विधि मदद कर सकते हैं:

public static byte[] ToMACBytes(this string mac) { 
     if (mac.IndexOf(':') > 0) 
      mac = mac.Replace(':', '-'); 
     return PhysicalAddress.Parse(mac).GetAddressBytes(); 
    } 

तब का उपयोग करें:

byte[] macBytes = "b8:27:eb:97:b6:39".ToMACBytes(); 

संपादित करें: शामिल सुझाव।

+0

इसके बारे में क्षमा करें। बेहतर? – Toxantron

+0

बहुत :) हालांकि मुझे यकीन नहीं है कि ओपी क्या चाहता है? – Liam

+1

@Toxantron, बेहतर होगा यदि आप ओपी को 'PhysicalAddress.Parse (str) का उपयोग करने का सुझाव देते हैं। GetAddressBytes()' और फिर आपके द्वारा प्रदान किए गए संदर्भ प्रदान करें। – publicgk