原始GPS与百度、谷歌、高德地图的相互转换(c语言转换)

2023-11-17

原始GPS与百度、谷歌、高德地图的相互转换

1.介绍三种坐标系

在进行地图开发过程中,我们一般能接触到以下三种类型的地图坐标系:
1.WGS-84:是国际标准,GPS坐标(Google Earth使用、或者GPS模块);
2.GCJ-02:中国坐标偏移标准,Google Map、高德、腾讯使用,又称为火星坐标;
3.BD-09:百度坐标偏移标准,Baidu Map使用。
在这里插入图片描述

2.WGS84、GCJ02、BD09之间的相互转换(C语言实现)

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
/*
 pi: 圆周率。
 a: 卫星椭球坐标投影到平面地图坐标系的投影因子。
 ee: 椭球的偏心率。
 x_pi: 圆周率转换量。
*/
 
double pi = 3.14159265358979324;		
double a = 6378245.0;
double ee = 0.00669342162296594323;
double x_pi = 3.14159265358979324 * 3000.0 / 180.0;
 
int wgs2bd(double lat, double lon, double* pLat, double* pLon); // WGS84=>BD09 地球坐标系=>百度坐标系 
int gcj2bd(double lat, double lon, double* pLat, double* pLon);	// GCJ02=>BD09 火星坐标系=>百度坐标系 
int bd2gcj(double lat, double lon, double* pLat, double* pLon);	// BD09=>GCJ02 百度坐标系=>火星坐标系 
int wgs2gcj(double lat, double lon, double* pLat, double* pLon);// WGS84=>GCJ02 地球坐标系=>火星坐标系
int gcj2wgs(double lat, double lon, double* pLat, double* pLon);// GCJ02=>WGS84 火星坐标系=>地球坐标系(粗略)
int bd2wgs(double lat, double lon, double* pLat, double* pLon);	// BD09=>WGS84 百度坐标系=>地球坐标系(粗略)
int gcj2wgs_Exactly(double lat, double lon, double* wgs_Lat, double* wgs_lon);// GCJ02=>WGS84 火星坐标系=>地球坐标系(精确)
int bd2wgs_Exactly(double lat, double lon, double* pLat, double* pLon);// BD09=>WGS84 百度坐标系=>地球坐标系(精确)
double *OffSet(double lat, double lon);	// 偏移量
double transformLat(double x, double y);// 纬度偏移量
double transformLon(double x, double y);// 经度偏移量

// WGS84=>BD09 地球坐标系=>百度坐标系 
int wgs2bd(double lat, double lon, double* pLat, double* pLon) {
   double lat_ = 0.0, lon_ = 0.0;
   wgs2gcj(lat, lon, &lat_, &lon_);
   gcj2bd(lat_, lon_,  pLat, pLon);
   return 0;
}
 
// GCJ02=>BD09 火星坐标系=>百度坐标系  
int gcj2bd(double lat, double lon, double* pLat, double* pLon) {
   double x = lon, y = lat;
   double z = sqrt(x * x + y * y) + 0.00002 * sin(y * x_pi);
   double theta = atan2(y, x) + 0.000003 * cos(x * x_pi);
   *pLon = z * cos(theta) + 0.0065;
   *pLat = z * sin(theta) + 0.006;
   return 0;
}
 
// BD09=>GCJ02 百度坐标系=>火星坐标系 
int bd2gcj(double lat, double lon, double* pLat, double* pLon) {
   double x = lon - 0.0065, y = lat - 0.006;
   double z = sqrt(x * x + y * y) - 0.00002 * sin(y * x_pi);
   double theta = atan2(y, x) - 0.000003 * cos(x * x_pi);
   *pLon = z * cos(theta);
   *pLat = z * sin(theta);
   return 0;
}
 
// WGS84=>GCJ02 地球坐标系=>火星坐标系
int wgs2gcj(double lat, double lon, double* pLat, double* pLon) {
    if (outOfChina(lat,lon))
    {
        *pLat = lat;
        *pLon = lon;
        return 0;
    }
   double dLat = transformLat(lon - 105.0, lat - 35.0);
   double dLon = transformLon(lon - 105.0, lat - 35.0);
   double radLat = lat / 180.0 * pi;
   double magic = sin(radLat);
   magic = 1 - ee * magic * magic;
   double sqrtMagic = sqrt(magic);
   dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
   dLon = (dLon * 180.0) / (a / sqrtMagic * cos(radLat) * pi);
   *pLat = lat + dLat;
   *pLon = lon + dLon;
   return 0;
}
 
// GCJ02=>WGS84 火星坐标系=>地球坐标系(粗略)
int gcj2wgs(double lat, double lon, double* pLat, double* pLon) {
    if (outOfChina(lat,lon))
    {
        *pLat = lat;
        *pLon = lon;
        return 0;
    }
	double *offset;
	offset = OffSet(lat,lon);
	*pLat = lat - offset[0];
 	*pLon = lon - offset[1];
	return 0;
}
 
// GCJ02=>WGS84 火星坐标系=>地球坐标系(精确)
int gcj2wgs_Exactly(double gcjlat, double gcjlon, double* wgs_Lat, double* wgs_lon) {
    if (outOfChina(gcjlat,gcjlon))
    {
        *wgs_Lat = gcjlat;
        *wgs_lon = gcjlon;
        return 0;
    }
	double initDelta = 0.01;
	double threshold = 0.000000001;
	double dLat = initDelta, dLon = initDelta;
	double mLat = gcjlat - dLat, mLon = gcjlon - dLon;
	double pLat = gcjlat + dLat, pLon = gcjlon + dLon;
	double wgsLat = 0.0, wgslon = 0.0, i = 0.0 ,newgcjlat = 0.0,newgcjlon = 0.0;
 
	while (true) {
		wgsLat = (mLat + pLat) / 2;
		wgslon = (mLon + pLon) / 2;		
		wgs2gcj(wgsLat,wgslon,&newgcjlat,&newgcjlon);
		dLon = newgcjlon - gcjlon;
		dLat = newgcjlat - gcjlat;
		if ((fabs(dLat) < threshold) && (fabs(dLon) < threshold))
			break;
							
		if (dLat > 0)
			pLat = wgsLat;
		else
			mLat = wgsLat;
		if (dLon > 0)
			pLon = wgslon;
		else
			mLon = wgslon;
 
		if (++i > 10000)
			break;
	}
	*wgs_Lat = wgsLat;
	*wgs_lon = wgslon;
	return 0;
}
 
// BD09=>WGS84 百度坐标系=>地球坐标系(粗略)
int bd2wgs(double lat, double lon, double* pLat, double* pLon) {
	double lat_ = 0.0, lon_ = 0.0;
 	bd2gcj(lat, lon, &lat_, &lon_);
 	gcj2wgs(lat_, lon_,  pLat, pLon);
 	return 0;
}
 
// BD09=>WGS84 百度坐标系=>地球坐标系(精确)
int bd2wgs_Exactly(double lat, double lon, double* pLat, double* pLon) {
	double lat_ = 0.0, lon_ = 0.0;
 	bd2gcj(lat, lon, &lat_, &lon_);
 	gcj2wgs_Exactly(lat_, lon_,  pLat, pLon);
 	return 0;
}
 
 
 
// 偏移量
double *OffSet(double lat, double lon) {
        double Latlon[2] = {0.0,0.0};
        double dLat = transformLat(lon - 105.0, lat - 35.0);
        double dLon = transformLon(lon - 105.0, lat - 35.0);
        double radLat = lat / 180.0 * pi;
        double magic = sin(radLat);
        magic = 1 - ee * magic * magic;
        double sqrtMagic = sqrt(magic);
        dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
        dLon = (dLon * 180.0) / (a / sqrtMagic * cos(radLat) * pi);
		Latlon[0] = dLat;
		Latlon[1] = dLon;
		return Latlon;
	}
 
// 纬度偏移量
double transformLat(double x, double y) {
       double ret = 0.0;
       ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * sqrt(fabs(x));
       ret += (20.0 * sin(6.0 * x * pi) + 20.0 * sin(2.0 * x * pi)) * 2.0 / 3.0;
       ret += (20.0 * sin(y * pi) + 40.0 * sin(y / 3.0 * pi)) * 2.0 / 3.0;
       ret += (160.0 * sin(y / 12.0 * pi) + 320 * sin(y * pi  / 30.0)) * 2.0 / 3.0;
       return ret;
}
 
// 经度偏移量
double transformLon(double x, double y) {
       double ret = 0.0;
       ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * sqrt(fabs(x));
       ret += (20.0 * sin(6.0 * x * pi) + 20.0 * sin(2.0 * x * pi)) * 2.0 / 3.0;
       ret += (20.0 * sin(x * pi) + 40.0 * sin(x / 3.0 * pi)) * 2.0 / 3.0;
       ret += (150.0 * sin(x / 12.0 * pi) + 300.0 * sin(x / 30.0 * pi)) * 2.0 / 3.0;
       return ret;
}
	
//WGS84坐标 	120.1067916,30.3430350
//GCJ02坐标 	120.111599,30.340772
//BD09坐标	 	120.118000,30.347094

int main()
{
 
	double	lat=30.3430350;
	double	lon=120.1067916;
	double	newlat,newlon;
	printf("WGS84:	lat=%lf,lon=%lf	转\r\n",lat,lon);//WGS84坐标转GCJ02坐标 
	if(wgs2gcj(lat,lon,&newlat,&newlon)==0)
		printf("GCJ02:	lat=%lf,lon=%lf\r\n",newlat,newlon);
		
	printf("-------------------------------------------\r\n"); 
	
//WGS84坐标转BD09坐标	
	//printf("WGS84:	lat=%lf,lon=%lf	转\r\n",lat,lon);//WGS84坐标转BD09坐标
	//if(wgs2bd(lat,lon,&newlat,&newlon)==0)
	//	printf("BD09:	//lat=%lf,lon=%lf\r\n",newlat,newlon);
		
	//printf("-------------------------------------------\r\n"); 

//GCJ02转其他测试 
	//double	lat=30.340772;
	//double	lon=120.111599;
	//double	newlat,newlon;
	//printf("GCJ02:	lat=%lf,lon=%lf	转\r\n",lat,lon);//GCJ02坐标转BD09坐标 
	//if(gcj2bd(lat,lon,&newlat,&newlon)==0)
		//printf("BD09:	lat=%lf,lon=%lf\r\n",newlat,newlon);
			
	//printf("-------------------------------------------\r\n"); 
	
	//printf("GCJ02:	lat=%lf,lon=%lf	转(粗略)\r\n",lat,lon);//GCJ02坐标转WGS84坐标 ,粗略 
	//if(gcj2wgs(lat,lon,&newlat,&newlon)==0)
		//printf("WGS84:	lat=%lf,lon=%lf\r\n",newlat,newlon);
			
	//printf("-------------------------------------------\r\n"); 
	
	//printf("GCJ02:	lat=%lf,lon=%lf	转(精确)\r\n",lat,lon);//GCJ02坐标转WGS84坐标 ,精确  
	//if(gcj2wgs_Exactly(lat,lon,&newlat,&newlon)==0)
		//printf("WGS84:	lat=%lf,lon=%lf\r\n",newlat,newlon);
	
	//printf("-------------------------------------------\r\n"); 	

 
//BD09转其他测试 
	//double	lat=30.347094;
	//double	lon=120.118000;
	//double	newlat,newlon;
	//printf("BD09:	lat=%lf,lon=%lf	转\r\n",lat,lon);//BD09坐标转GCJ02坐标 
	//if(bd2gcj(lat,lon,&newlat,&newlon)==0)
		//printf("GCJ02:	lat=%lf,lon=%lf\r\n",newlat,newlon);
				
	//printf("-------------------------------------------\r\n"); 
	
	//printf("BD09:	lat=%lf,lon=%lf	转(粗略)\r\n",lat,lon);//BD09坐标转WGS84坐标 ,粗略 
	//if(bd2wgs(lat,lon,&newlat,&newlon)==0)
		//printf("WGS84:	lat=%lf,lon=%lf\r\n",newlat,newlon);
				
	//printf("-------------------------------------------\r\n"); 
	
	//printf("BD09:	lat=%lf,lon=%lf	转(精确)\r\n",lat,lon);//BD09坐标转WGS84坐标 ,精确 
	//if(bd2wgs_Exactly(lat,lon,&newlat,&newlon)==0)
		//printf("WGS84:	lat=%lf,lon=%lf\r\n",newlat,newlon);
					
	//printf("-------------------------------------------\r\n"); 	

		
 
//GNGGA等格式转度格式	
    //double gpslng = 12006.4096;
    //double gpslat = 3020.5845;
    //double resultlng = 0;
   // double resultlat = 0;
    //resultlng = (int)(gpslng/100) + (gpslng/100.0 - (int)(gpslng/100)) *100.0 / 60.0;
   // resultlat = (int)(gpslat/100) + (gpslat/100.0 - (int)(gpslat/100)) *100.0 / 60.0;
    //printf("lng = %lf,lat = %lf\n",resultlng,resultlat);			
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

原始GPS与百度、谷歌、高德地图的相互转换(c语言转换) 的相关文章

  • 将纬度和经度转换为十进制值

    我的 GPS 信息以以下形式呈现 北纬 36 57 9 西经 110 4 21 我可以使用Chris Veness 的 javascript 函数 http www movable type co uk scripts latlong ht
  • 同时有多个位置提供商

    我的定位系统有一些问题 我有一个实现位置侦听器的服务 我希望尽可能使用网络获得最佳位置 如果网络不够准确 精度大于 300mt 则使用 GPS 问题是这样的 我每 5 分钟需要一次位置信息 如果可能的话准确 否则不准确 我从一个开始 Loc
  • 如何在用户行走时跟踪 GPS 坐标,来自 iOS 平台的 xamarin.forms

    我刚刚经历过这个link http developer xamarin com recipes ios multitasking track significant location change 当用户使用 xamarin forms 应
  • Android LocationManager.getLastKnownLocation() 返回 null

    因此 我尝试在应用程序中对 GPS 坐标进行一次采样 我不想创建 LocationListener 对象来不断获取 GPS 更新 我想等到收到坐标 然后继续执行另一项任务 这是一个代码片段 LocationManager lm Locati
  • GPS坐标:一个点周围1平方公里

    我希望有人能给我提供一个方程来计算给定点周围 1 公里的平方 X 从 a aaa 到 b bbb Y 从 c ccc 到 c ccc 例如lat 53 38292839 and lon 6 1843984 我还需要围绕一个点 2 公里 5
  • 如何测试GPS状态?

    我现在创建一个应用程序来通过 GPS 检测设备的位置 我对 GPS 状态有疑问 我查看 GpsStatus Listener 但它很复杂 因为我是 Android 新手 这是我尝试对 GPS 状态执行的操作 我是否走在正确的轨道上 fina
  • 我如何从 JMapViewer 世界地图中获取鼠标单击位置

    我正在使用地图浏览器 http wiki openstreetmap org wiki JMapViewerjar 在 JPanel 上显示世界地图 在地图上我添加MapMarkerDot s这是 GPS 点 问题是当我单击MapMarke
  • GMSPolyline 非常大的内存峰值

    在允许用户在各种不同类型的地图上显示我们称之为轨迹的复杂位置点列表的 GPS 应用程序中 每个轨迹可以包含 2k 到 10k 个位置点 当轨迹在非 Google 地图类型上呈现时 它们会被大量剪切 修剪和路径简化 这是为了降低内存使用量并提
  • 如何使用卡尔曼滤波器预测测量之间的 GPS 位置

    我研究了OpenCV卡尔曼滤波器的实现 并做了一些基本的鼠标指针模拟并了解了基础 我似乎错过了在我的应用程序中使用它的一些关键点 并希望这里有人可以提供一个小例子 使用具有速度和位置的简单模型 KF statePre at
  • 寻找另一部智能手机的笛卡尔坐标?

    考虑到我有两部智能手机 A 和 B 如果我拿着智能手机 A 有没有办法确定 B 相对于我自己的位置 所以如果我们有这张图片的情况 它会告诉我 B 位于位置 2 1 利用 WiFi 信号强度来获取位置等创造性方法更受欢迎 我还可以确定两部手机
  • GPS 对比加速度计计算距离

    我正在尝试实现一个健身应用程序 可以在Android 中跟踪跑步速度和跑步距离 看起来我可以使用 GPS 或加速度计来计算这些信息 由于跑步者可能会将手机放在手里 放在肩膀上或放在口袋里 所以我的第一直觉是使用 GPS 获取位置并计算跑步速
  • 根据步行速度在 2 个 GPS 位置之间进行插值

    Problem 给定两个位置 L1 latitude1 longitude1 timestamp1 L2 latitude2 longitude2 timestamp2 以及可配置但恒定的移动速度 v 1 39 米每秒 例如 How can
  • C# - LINQ - GPS 纬度和经度的最短距离

    我有数据库 其中有带有 GPS 坐标的一流酒店 我想获得距离我选择的坐标最近的地方 我认为它应该看起来像这样 我在这里找到了很多示例代码 就像这样 var coord new GeoCoordinate latitude longitude
  • 在没有互联网的情况下使用 Javascript 获取 GPS 位置 [重复]

    这个问题在这里已经有答案了 您好 如果设备具有 GPS 硬件 我们可以在没有互联网连接的情况下使用 JavaScript 获取 GPS 位置吗 请注意谁将其标记为重复 我需要 JavaScript 在没有互联网连接的情况下工作 并使用 GP
  • Android:计算两个位置之间距离的最佳方法

    我在这个主题上做了一些研究 但有很多观点并没有给出一个清晰的图像 我的问题是这样的 我正在为 Android 开发一个基于 GPS 的应用程序 在其中我想实时了解 Android LocationManager 指定的当前位置与其他位置之间
  • Android 中的 GPS 超时

    在黑莓中 我们使用超时来获取位置 这样如果它在这么长时间内没有重新调整位置 我们就会知道 但是在Android中 没有超时的概念 任何人都可以告诉我们替代方案 我们可以发现 在这么长时间之后 GPS没有位置更新 您可以使用两个线程来实现此超
  • 当我的活动结束时,如何停止 GPS/位置跟踪?

    我有一个非常简单的 Android 应用程序 它显示 Google 地图视图并使用 GPS 跟踪位置 基本上像这样 public void onCreate Bundle savedInstanceState mLocationManage
  • Swift 将十进制坐标转换为度、分、秒、方向

    我怎样才能将其转换为快速 我最好的猜测是所有 int 都变成了 var 删除所有导致 的 此外 如果有的话可以给我指出一个很好的来源来了解事物如何转换 那就太好了 NSString coordinateString int latSecon
  • iOS:应用程序在安装应用程序时不会征求用户的许可。每次都获取 kCLAuthorizationStatusNotDetermined - Objective-c 和 Swift

    我正在尝试在我的 iOS 应用程序中获取用户位置 我首先在我的项目中包含了核心定位框架 然后单击按钮 我将调用核心位置 api 如下所示 当我尝试在设备中安装它时 核心位置从不询问用户许可 当我尝试获取单击按钮时的位置时 我得到 kCLAu
  • 获取当前 GPS 时出现 NullPointerException

    我有一个测试屏幕 其中有一个按钮 按下它会调用该服务 我正在尝试实现一种方法来获取当前用户的当前 GPS 位置 但在尝试调用时它崩溃了 谁能告诉我问题是什么吗 package com example whereyouapp import j

随机推荐

  • 部分HTTPS网站无法访问的可能原因

    最近访问一些HTTPS的网站 总有一些网站无法正常访问 总是提示证书过期 查看了下对应网站的证书 没到期呀 于是总认为是自己系统或者浏览器的问题 可查来查去 改来改去也无法解决问题 直到仔细观察了下证书颁发机构 才发现都是一个机构的 Let
  • java swing 日志_springBoot swing 界面实现配置和日志打印

    packagecom adao simulater swing importcom adao simulater common Constant importcom adao simulater common PropertiesUtil
  • http请求与Request常用方法

    一 http请求 HTTP请求报文由3部分组成 请求行 请求头 请求体 是请求方法 GET和POST是最常见的HTTP方法 除此以外还包括DELETE HEAD OPTIONS PUT TRACE 不过 当前的大多数浏览器只支持GET和PO
  • 安装cnpm(傻瓜式通俗移动)

    1 首先确保自己安装好node并且npm能正常使用 2 以管理员身份打开cmd 3 输入npm install g cnpm registry https registry npm taobao org并运行 4 等待安装结束后 输入 cn
  • PWM调光调色温技术学习(笔记)

    前言 在智能化的浪潮中 智能照明是智能家居中非常重要的一部分 由于LED照明的大量普及 相对于传统的节能灯和白炽灯 LED照明的可塑性强很多 这其中LED灯的亮度调节和色温调节已经成为智能照明的主流需求 本文就从LED照明的亮度调节 色温调
  • [网络安全自学篇] 三十一.文件上传之Upload-labs靶场及CTF题目01-10(四)

    这是作者的系列网络安全自学教程 主要是关于安全工具和实践操作的在线笔记 特分享出来与博友们学习 希望您们喜欢 一起进步 前文分享了编辑器漏洞和IIS高版本文件上传漏洞 包括FCKeditor eWebEditor 畸形解析漏洞等 本篇文章将
  • Linux 如何快速查看 IP 地址

    查看IP 1 进入Linux 系统 在主页面空旷的地方右键 选择 打开终端 2 在显示的界面中输入 ifconfig a 就可以查看到Linux 的地址了 快速查看IP 和修改 1 点击应用程序 gt 选择系统工具 选择设置 gt 找到网络
  • Ubuntu 安装 zshell

    一 检查系统中原来的shell cat etc shells 二 安装 zsh apt install zsh 安装zsh chsh s bin zsh 将zsh设置成默认shell 不设置的话启动zsh只有直接zsh命令即可 三 安装oh
  • 二叉树知识总结

    一 前言 数组的搜索比较方便 可以直接用下标 但删除和插入就比较麻烦 链表与之相反 删除和插入元素很快 但查找比较慢 此时 二叉树应运而生 二叉树既有链表的好处 也有数组的好处 在处理大批量的动态数据时比较好用 是一种折中的选择 文件系统和
  • 线程——一个计数器计数到100,在每个数字之间暂停1秒,每隔10个数字输出一个字符串

    16 一个计数器计数到100 在每个数字之间暂停1秒 每隔10个数字输出一个字符串 public class MyThread extends Thread public void run for int i 0 i lt 100 i if
  • Qt 环境搭建

    安装QtCreator 进入Qt官网https www qt io zh cn 点击下载按钮 然后选择试用Qt 这里下载的是免费版本 也就是社区版本 如果点击购买则下载专业版 点击下载后需要填写个人信息 填好邮箱和手机 还需要填写用途 并选
  • 【基于深度学习的生活垃圾分类识别管理可视化系统-哔哩哔哩】 https://b23.tv/0UBohX2

    基于深度学习的生活垃圾分类识别管理可视化系统 哔哩哔哩 https b23 tv 0UBohX2 https b23 tv 0UBohX2
  • 【前端】Vue+Element UI案例:通用后台管理系统-Header+导航栏折叠

    文章目录 目标 代码 0 创建组件 1 按钮 2 头像下拉框 3 去除左右缝隙 4 点击按钮折叠导航栏 Vuex 5 折叠标题和Header效果 总代码 CommonHeader vue store的index js store的tab j
  • 误区 一下代码是曾经误认为 radio的onclick 事件在 发生 以下是实例代码

    实际上onclick事件还是在radio上发生 只不过是通过js把 a 标签的href属性的 值 给动态的发生该表了而已 误以为是在 a 标签上发生了onclick事件 a a
  • playwright自动化项目搭建

    具备功能 关键技术 pylaywright测试库 pytest单元测试框架 pytest playwright插件 非关键技术 pytest html插件 pytest rerunfailures插件 seldom 测试框架 实现功能 元素
  • 静态链接原理以及过程

    通常程序的编译中 或多或少会调用其它库中的函数接口 本篇blog就是讲静态库的调用流程 通常我们知道编译一个可执行程序会有这四个过程 预处理 编译 汇编以及链接 前面三步就是产生目标文件 o的过程 链接就是把各个 o文件粘在一起 构成一个可
  • 杂项设备(misc device)和字符设备(char device)区别

    杂项设备 misc device 杂项设备也是在嵌入式系统中用得比较多的一种设备驱动 在 Linux 内核的include linux目录下有Miscdevice h文件 要把自己定义的misc device从设备定义在这里 其实是因为这些
  • Go语言基础面试题

    一 选择题 1 关于异常设计 下面说法正确的是 A 在程序开发阶段 坚持速错 让程序异常崩溃 开发 测试 准生产 生产 B 在程序部署后 应恢复异常避免程序终止 C 一切皆错误 不用进行异常设计 D 对于不应该出现的分支 使用异常处理 参考
  • 2021-08-03训练记录

    2021 08 03训练记录 Magic Line String Invasion A B C 小biu放牛 小A的游戏 A B C Magic Line 样例输入 1 4 0 1 1 0 1 0 0 1 样例输出 1 999000000
  • 原始GPS与百度、谷歌、高德地图的相互转换(c语言转换)

    原始GPS与百度 谷歌 高德地图的相互转换 c语言转换 原始GPS与百度 谷歌 高德地图的相互转换 1 介绍三种坐标系 2 WGS84 GCJ02 BD09之间的相互转换 C语言实现 原始GPS与百度 谷歌 高德地图的相互转换 1 介绍三种