`
zmfbird
  • 浏览: 49243 次
  • 性别: Icon_minigender_2
  • 来自: 西安
最近访客 更多访客>>
社区版块
存档分类
最新评论

google map 折线编码c++实现(修改1)

阅读更多

编码折线算法格式还提供了编码无符号值的步骤,如下:

下面说明了编码无符号值的步骤:

取初始无符号值:
174 
将十进位值转换为二进制值:
10101110 
将该二进制值分为 5 位一组的块(从右手边开始):
101 01110 
将这些 5 位一组的块倒序放置:
01110 101 
如果后面还有一个位块,则将每个值与 0x20 进行或操作 (OR):
101110 00101 
将每个值转换为十进制值:
46 5 
将每个值加上 63:
109 68 
将每个值转换为其 ASCII 对应值:
mD 

 

仔细看了一下,这部分的编码和有符号编码从第三步开始是一样的。于是调整自己的代码,如下:

#include "stdafx.h"
#include "string"
#include "iostream"
using namespace std;
//四舍五入取整函数
int interger(double x)
{
	int y;
	if(x<0)
		y=int(x-0.5);
	else if(x>=0)
		y=int(x+0.5);
	return y;
}
//无符号数编码
void encodeNumber(unsigned int sgn_num)
{
	
	string result="";
	 //将该二进制值分为5位一组的块
   while(sgn_num>=0x20)
   {
	   int x;
	   x=sgn_num&0x1f;
	  // cout<<x<<endl;
	   //进行异或加上63
	   x=x|0x20;
	 //  cout<<x<<" ";
	   x=x+63;
	  // cout<<x<<" ";
	   //change(x);
	  //cout<<char(x)<<endl;
	   result+=char(x);
	   sgn_num>>=5;
	   
   }
   /*sgn_num=sgn_num&0x1f;
   sgn_num=sgn_num|0x20;*/
  // cout<<sgn_num<<" ";
   result+=char(sgn_num+63);
   cout<<result;
	
}
//有符号值编码
void encodeSignedNumber(int num)
{
	int sgn_num;
	//变换二进制值,左移,地位补0
	sgn_num=num<<1;
//	cout<<sgn_num<<endl;
	if(num<0)
	{
		sgn_num=~(sgn_num);//对负数求反
	}
	encodeNumber(sgn_num);
}

int _tmain(int argc, _TCHAR* argv[])
{
	//有符号数,设置成double型,双精度浮点型,10位有效数字,float是单精度浮点型,只有6位有效数字
	double col=-179.9832104;
	int num;
	num=interger(col*100000);	
	encodeSignedNumber(num);
	
	unsigned int x=174;
	encodeNumber(x);
	//system函数是用来执行一条dos命令或运行一个外部程序。 pause是暂停,并等待用户按键 
	system("pause");
	return 0;
}

 

 

0
0
分享到:
评论

相关推荐

    Map (c++实现的简易map)

    在C++标准库中,`Map`被实现为`std::map`,但在这个场景中,我们讨论的是一个用户自定义的简易`Map`实现,名为"MyMap",这是在Visual Studio 2013环境下编写的。 自定义`Map`的主要目的是为了学习和理解数据结构的...

    香农编码之C++实现

    这里我们将深入探讨香农编码的原理及其C++实现中的可能问题。 首先,理解香农编码的基本步骤: 1. **统计字符频率**:对输入的文本或数据流进行分析,统计每个字符出现的次数,得到字符频率分布。 2. **排序字符**...

    霍夫曼编码C++实现

    在C++中实现霍夫曼编码,需要理解以下几个关键知识点: 1. 频率统计:首先,我们需要对输入的文本进行字符频率统计。C++中可以使用`std::map`或`std::unordered_map`来存储每个字符及其出现次数。 ```cpp std::map...

    Huffman编码C++实现

    在C++中实现Huffman编码需要理解以下几个关键概念: 1. **字符频率统计**:首先,我们需要统计输入文本中各个字符出现的频率。这通常通过遍历整个文本并维护一个哈希表(如`std::unordered_map`)来完成,哈希表的...

    googleMap折线示例

    本文将通过一个具体的示例来详细介绍如何使用Google Maps API实现折线的绘制,并对代码进行深入剖析。 #### 二、示例概述 本示例主要实现了以下功能: 1. 在地图上动态创建标记(Marker),用户可以通过双击地图...

    C++调用GOOGLEMAP代码

    标题 "C++调用GOOGLEMAP代码" 涉及到的是在C++程序中集成和使用Google Maps API的技术。Google Maps API是一个强大的工具,允许开发者在他们的应用程序中嵌入地图、路线规划、地理编码(地址转经纬度)等功能。在C++...

    c_code_哈夫曼编码的C++实现_

    在C++中实现哈夫曼编码涉及几个关键步骤,包括构建哈夫曼树、生成哈夫曼编码以及编码和解码过程。 首先,我们需要创建一个`HuffmanNode`结构体或类,表示哈夫曼树中的节点。这个节点通常包含两个子节点(左子节点和...

    c++中map的基本用法和嵌套用法实例分析

    `map`的数据结构通常实现为红黑树,提供了O(log n)的时间复杂度进行插入、查找和删除操作。下面我们将详细探讨`map`的基本用法和嵌套用法。 ### 一、map基本用法 1. **头文件** 使用`&lt;map&gt;`头文件来包含`map`...

    哈弗曼编码译码(C++实现,源码+可执行程序+实验报告)

    哈弗曼编码是一种高效的数据压缩方法,由美国学者大卫...通过以上步骤,我们可以理解哈弗曼编码的核心原理和C++实现的细节。在实际应用中,哈弗曼编码常被用于文本压缩、图像压缩等领域,以提高数据存储和传输的效率。

    Huffman编码的C++实现

    在C++中实现Huffman编码涉及到了数据结构、算法以及文件操作等多个知识点。 首先,我们要理解Huffman编码的基本原理。它通过以下步骤工作: 1. **统计字符频率**:对输入文本中的每个字符出现的次数进行统计,形成...

    googlemap折线标记路径

    本教程将聚焦于如何在Android应用中使用Google Maps API来绘制折线标记路径。 首先,你需要在你的Android项目中添加Google Play Services库,这是使用Google Maps API的前提。在`build.gradle`文件中,添加以下依赖...

    C++ Google地图API源码

    用c++实现利用Google地图API实现的定位查找,可以和IP数据库一起做定位查找程序,很好用。也可以用来调用任意网页里的Javascript函数。 --忘了地图文件了,不好意思,是用GoogleAPI写的Map.html文件。单独上传,供...

    map_map_增删查改_STL_C++_

    `map`内部实现为红黑树,这保证了插入、删除和查找操作的时间复杂度为O(log n)。在C++中,`map`的定义位于`&lt;map&gt;`头文件中。 ### 基本概念 1. 键(key):每个元素都有一个键,用于唯一标识该元素。 2. 值(value...

    C++实现哈夫曼树及哈夫曼编码.rar

    C++实现哈夫曼树和哈夫曼编码,通常包括以下步骤: 1. 定义节点类(HuffmanNode),包含字符、频率以及左右子节点等属性。 2. 创建优先队列,用于存储节点并按权值排序。 3. 实现哈夫曼树的构建函数,利用优先队列...

    map.h C++ 头文件下载

    map.h C++ 头文件下载 C++17 标准库文件 unordered_map map

    二进制哈弗曼编码C++程序

    在C++中实现这些功能,可以使用STL中的`priority_queue`作为最小堆,`map`或`unordered_map`存储字符频率和哈弗曼编码。程序应该包含读取输入数据、构建哈弗曼树、生成编码、计算相关参数和验证克拉夫特不等式等功能...

    信息论Shannon 编码算法C++

    以上就是Shannon编码算法的基本原理和C++实现方式。理解并掌握这一算法有助于提升在信息处理、数据压缩和通信领域的能力。在实际应用中,Shannon编码常常与其他数据压缩技术结合,如LZ77、LZ78等,以达到更好的压缩...

    c++实现的简易map

    在这个特定的项目中,标题提到“c++实现的简易map”,这意味着开发者自己动手实现了一个类似标准库`&lt;map&gt;`的数据结构。描述中指出,这个简易`Map`是在Visual Studio 2019环境下编写的,这通常意味着它是用C++17或更...

    哈夫曼编码的原理及C++实现

    ### 哈夫曼编码的原理及C++实现 #### 一、编码原理 哈夫曼编码(Huffman Coding)是一种高效的数据压缩方法,通过基于数据中各字符出现的频率来构建一种特殊的二叉树——哈夫曼树,进而根据这棵树为每个字符分配一...

    哈弗曼编码C++程序

    4. **C++实现细节**: - `main.cpp`是程序的主入口,负责调用哈弗曼树的构建和编码/解码功能。 - `huffman.h`可能包含了哈弗曼树的定义以及相关的函数声明。在这个头文件中,你可以看到关于`HuffmanNode`类的定义...

Global site tag (gtag.js) - Google Analytics