![](/img/trans.png)
[英]How to convert Longitude/ Latitude and zoom level to Google coordinates in C#?
[英]Latitude/Longitude coordinates to BCD in C#
我正在編寫C#代碼以在GPS跟蹤器(Sinowell G102)上對地理圍欄進行編程。 地理圍欄是矩形的。 我基本上必須獲取左上角坐標和右下角坐標,並將其編程到跟蹤器中。 現在,跟蹤器希望這些坐標為BCD格式(二進制編碼的十進制)。 每個坐標為4個字節長。 現在,我想出了如何將正緯度或經度坐標轉換為BCD-根據跟蹤器的協議手冊,坐標如下:
22°33.995′ (即北22度,東33.995分鍾)
變為四個字節02 23 39 95
這很簡單。 但是,我的問題是,我不知道如何解決南半球的負坐標(例如我們在南非遇到的-25°33.995′)
我設法與該跟蹤器的制造商取得了聯系,但不幸的是這是一家中國公司,他們的英語不是很好。 但是,他們確實向我發送了以下圖片:
不幸的是,我不完全理解此代碼。 我將不勝感激任何幫助....謝謝。
if (val&0x80000000)
如果設置了高位,則此if語句為true。 二進制0x80000000是1,后跟全零。
val&0x7FFFFFFF
該語句會將高位設置為零。
0-(val&0x7FFFFFFF)
將高位設置為零后,該值取反。
因此,將其反轉,您將需要使用現有算法將絕對值( abs(raw)
)轉換為二進制。 假設原始值在一個名為raw
的變量中,而二進制在一個名為binary
的變量中。 如果raw為負,則需要在binary
上設置高位。 像這樣:
if (raw < 0) {
binary = binary | 0x80000000;
}
&和| 是按位運算。 對參數中的每個位的應用和/或邏輯。 因此0x1&0x0 = 0、0x1&0x1 = 1、0x0 | 0x0 = 0x0和0x0 | 0x1 = 0x1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.