2014-11-06 171 views
3

我正在編寫一個Windows Phone 8.1應用程序,可以發現附近的藍牙低功耗設備。獲取設備的MAC地址

foreach (DeviceInformation device in devices) 
{ 
    BluetoothLEDevice bleDevice = await BluetoothLEDevice.FromIdAsync(device.Id); 
} 

一切工作正常,但bleDevice.BluetoothAddress屬性包含ulong類型,而我需要一個字符串類型,格式類似於MAC地址。

實施例:

bleDevice.BluetoothAddress: 254682828386071(ULONG)

希望的MAC地址: D1:B4:EC:14:29:A8(字符串)(這是我需要它的一個例子,而不是設備的實際Mac地址)

有沒有辦法將long轉換爲Mac地址?或者有另一種直接發現Mac地址而無需轉換的方法?我知道有一個名爲In The HAnd - 32feet的工具可以幫助我,但截至目前,Windows Phone 8.1不受支持。

回答

4

有很多話題可以通過Google和StackOverflow找到。無論如何,這裏有一種方法:

ulong input = 254682828386071; 
var tempMac = input.ToString("X"); 
//tempMac is now 'E7A1F7842F17' 

var regex = "(.{2})(.{2})(.{2})(.{2})(.{2})(.{2})"; 
var replace = "$1:$2:$3:$4:$5:$6"; 
var macAddress = Regex.Replace(tempMac, regex, replace); 
//macAddress is now 'E7:A1:F7:84:2F:17' 
+2

感謝您的代碼! 當我在等待時,我注意到BluetoothLEDevice項目也有屬性DeviceId包含(有點隱藏,真的)Mac地址 謝謝! – Ravenheart 2014-11-06 09:55:04

+0

也許,... input.ToString(「X12」)更好。但答案是完美的! – 2017-10-04 08:11:15