首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

IM通讯协议专题学习(六):手把手教你如何在Android上从零使用Protobuf

6.2Protobuf 基本数据类型----图片可变长度编码和固定长度编码区别://例如说我在 Java 里面进行如下定义:inta = 1;//因为 int 类型占 4 个字节,1个字节占 8 位,我们把...图片ok,简单的介绍了 Protobuf 语法后,接下来我们使用 AndroidStudio 将 Protobuf 文件转换为对应的 Java 文件来进行开发。...7、Protobuf Java 文件----首先我们要明白一点:Protobuf 是一种与平台,语言无关的数据存储格式,因此我们要在其它语言Java,Kotlin,Dart 等语言中使用它,则必须将...(" aaaa#qq.com").addAllCourse(mutableListOf("Math", "English", "Computer")).build()//2、序列化并返回一个包含其原始字节字节数组...对象相互转换----这个实则是在前述的基础上,当我们将 Protobuf 转换为 JSON 后,在把 JSON 转换为对应的 Java 对象。

2.8K60
您找到你想要的搜索结果了吗?
是的
没有找到

Kotlin入门(32)网络接口访问

获取网络图片的基本流程同文本格式的接口访问,一样先通过URL类构建HTTP对象,然后在doAsync代码块中调用HTTP对象的readBytes方法获得图片字节数组。...将字节数组换为位图对象,这在前面的文章《Kotlin入门(27)文件读写操作》已经加以介绍,即利用BitmapFactory工具的decodeByteArray方法实现转换操作。...现在保存网络图片反而无需如此折腾,这是因为获取网络图片得到了字节数组字节数组保存为文件可是相当方便的噢,只要调用File对象的writeBytes方法,短短一行就保存好图片了。...介绍完了网络图片的存取流程,最终的Kotlin编码一既往地简单明了,下面展示了一个验证码动态显示的页面代码: class HttpImageActivity : AppCompatActivity()...//也可通过下面三行代码把字节数组写入文件,即生成一个图片文件             val path = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS

1.7K30

试试看长链接生成,URL地址变成乐谱音符🎵

图片 简单地说,访问访问这个网站,如果存在二级目录,那么: 截取二级目录内容,尝试映射为UTF-8字符数组; 成功映射的情况,还原UTF-8字符串数组为原始URL并跳转; 映射失败或者不存在二级目录...UTF-8数组 首先,我们要知道UTF-8是Unicode的一种字节序列表示形式(编码方案),UTF-8将一个Unicode字符根据其码点转化为1-4个字节的序列来存储和传输。...汉字也都有自己的Unicode码点,"人"字的码点是0x4EBA。...回到UTF-8,因为UTF-8为1-4个字节的序列,所以可以用UTF-8数组来表示,比如你好世界: "你"字符的Unicode码点是0x4F60,0x4F60在UTF-8编码为3个字节数字序列: [228...把各个字节序列整合成一个数字数组 这样就完成了从字符串到UTF-8编码数组的转换。

56480

中文编码问题详解

一.常见的编码 ASCII,ISO-8859-1,GB2312,GNBK,UTF-8,UTF-16等 编码格式 表示个数 所需字节数 说明 ASCII 128 单字节的低七位表示 0~31为控制字符回车换行等...二.java中需要编码的场景 1.磁盘I/O操作中存在的编码 Reader类是java中读取字符的父类 InputStream是读取字节的父类 InputStreamReader类是关联字节到字符的桥梁...s = "内容"; //字符串转换为字符数组 buye[] b = s.getBytes("UTF-8); //字符数组换为字符串 String n = new String(b,"UTF-8");...("内容"); //字节换为字符 CharBuffer buf2 = charset.decode(buf); 2.3 ByteBuffer类 ByteBuffer的用法: //字符转换为字节 //创建一个容量为...encodeURL():可以将整个URL中的字符进行UTF-8编码,在背个码值之前添加"%" 注意:java中的URLEncoder、URLDecoder和js的encodeURIComponent对应

3K10

java byte16进制字符串_Java字节数组转换成十六进制字符串的几种方法

参考链接: Java程序将字节数组换为十六进制 前言  最近在项目中需要将字节数组转换成十六进制字符串,而Java内置的库中并没有相关工具可用,因此查了一下byte数组hex字符串的相关方法,列出如下..."%02x", b);  }  String result = formatter.toString();  formatter.close();  return result;  }  方法3:使用字节字符映射...= hexArray[v >>> 4];  out[i * 2 + 1] = hexArray[v & 0x0F];  }  return new String(out);  }  此处需要注意的是,Java...总结  以上介绍了Java中将字节数组转化成十六进制字符串的4种方法,需要的话可以直接拿来使用。...个人推荐使用方法1和方法4:当Java项目中没有commons-codec依赖时,直接使用方法1是最方便的,而且可以减少依赖数量,避免引入新的jar包;当项目中有使用commons-codec时,直接使用方法

4.5K20

JavaScript中的二进制数据

ArrayBuffer​ 其他语言 java,易所表示的是字节数组字节集,而在 js 中则称二进制数组(都是用来表示二进制数据的),要注意的是这里的二进制数组并不是真正的数组,而是类似数组的对象。...例如存储二进制数据的则是 ArrayBuffer 对象,例如请求图片时,就会指定参数 responseType: 'arraybuffer'表示返回二进制数据,也就是图片数据。...,来访问数据,buf[0]返回的就是 97,但 buf 又有 length 与其他的属性方法,这种数组就统称为类数组。...通俗点来说(对我而言),ArrayBuffer相当于其他语言的字节数组字节集,但不可写,而Buffer 对象则是操作ArrayBuffer的。...应用​ 与二进制数据有关的地方就有应用 编码转化​ 将请求图片转化成 base64 编码​ axios .get('图片url地址', { responseType: 'arraybuffer

2.2K10

【小家javajava8新特性之---Base64加密和解密原理

Java8中Base64编码已经成为Java类库的标准,且内置了Base64编码的编码器和解码器。...Exception e) { throw new RuntimeException("文件路径无效\n" + e.getMessage()); } } 将Base64换为...这样用途就受到了很大的限制,比如图片二进制流的每个字节不可能全部是可见字符,所以就传送不了。最好的方法就是在不改变传统协议的情 况下,做一种扩展方案来支持二进制文件的传送。...然后对需要处理的的二进制数据做处理:每3个字节(24bit)一组,因此按照6bit一组为Base64的规则可以划为4组,每组6bit,刚好64位(对应数组的64个值) Base64的码表只有64个字符...java8的Api提供了Basic编码、URL编码、MIME编码、对流的支持

1.4K20

Java学习笔记-全栈-Java基础-09-IO流中的总结

而ByteArray…Stream是内存(电脑内存,服务器内存,网络上的内存)中的某个字节数组对象作源。对于内存,java是可以直接操控的,因此回收由gc操作,close实际是空方法。...从本地读入图片到程序(内存),ByteArrayOutputStream输出图片字节数组(BAOS对象.toByteArray())《==》ByteArrayInputStream读入字节数组到程序,...FileInputStream写出图片到本地 字节流 字符流 缓冲流 字节数组流 数据流 处理基本数据类型和字符串,不仅保留数据,还保留数据类型 对象流 i.序列化、反序列化,只有继承serializable...ii.一般步骤:先将对象转为字节数组,然后缓冲装饰,最后用对象流输出;读取的时候按输出顺序读取,用Object去接收,最后用instance判断并实施强 转换流(InputStreamWriter/Reader...将字节流转换为字符流,并指定字符集,如用于爬虫) 打印流(装饰类,PrintStream字节流,PrintWriter字符流) 方便输出信息(普通的输出都是用while),还可用于输出重定向 随机流

44620

解决方案:TypeError: a bytes-like object is required, not str

我们首先定义了请求的URL和参数,参数为一个字典对象data。 接下来,我们使用encode()方法将字典对象转换为字节对象,指定编码格式为UTF-8。...通过这个示例,我们可以看到如何在实际应用场景中将字符串对象转换为字节对象来解决TypeError: a bytes-like object is required, not 'str'错误,以确保请求发送和数据处理的正常进行...bytes对象可以通过字面量表示,b'hello'。bytes类型常用于处理二进制数据或者网络传输中的字节流,比如处理图像、音频、视频等文件。...bytes类型有自己的一些方法,decode()方法用于将字节序列解码为字符串,hex()方法用于将字节序列转换成十六进制字符串等。...str类型有自己的一些方法,encode()方法用于将字符串编码为字节序列,upper()方法用于将字符串转换为大写等。

1.4K10

了不起的Base64

限制: 尽管 btoa 是一个有用的函数,但它有一些限制: 「只能编码字符串:」 btoa 函数只接受字符串作为参数,而不接受其他类型的数据(二进制数组)。...// 原始文本字符串,包含非Latin1字符 const text = "前端柒八九"; // 创建一个 TextEncoder 对象,用于将文本编码为字节数组 const encoder = new...将字节数组换为字符串 // 然后使用 btoa 函数将字符串转换为 Base64 编码 const base64 = btoa(String.fromCharCode(...data)); // 打印...通过首先将每个字符转换为其对应的 ASCII 数字,然后将该十进制数转换为二进制,(使用ASCII 二进制工具[4])将文本front7换为二进制: 01100110 01110010 01101111...想象一下,如果我们有一张图片或一个「敏感文件」(PDF、文本、视频等),而不是简单的字符串,我们想将它存储为文本。

33320

Java基础语法简答题

开发工具, java.exe 运行工具;javac.exe编译工具 写出所有的基本数据类型和对应的字节数     1.整型:byte(1个字节)、short(2个字节)、int(4个字节) 、long...(8个字节) 2.浮点型:float(4个字节)、double(8个字节) 3.字符型:char(2个字节) 4.布尔型:boolean(1个字节) 写出所有的基本数据类型和对应的包装类型 整型:byte...】 (3)java.lang.NumberFormatException 【数字格式化异常】 (4)java.lang.IndexOutOfBoundsException  【数组索引越界异常】 (6)...JAVA的自动拆箱装箱 自动装箱就是将基本数据类型自动的转换为对应的对象包装类型; 拆箱就是将对象包装类型转换为基本数据类型。...什么是自动类型强,什么是强制类型转换 自动类型强  范围小的数据类型自动转为为范围大的数据类型 强制类型转换,范围大的数据类型需要强制转换为范围小的数据类型 一维数组的三种创建方式 数据类型[] 数组

82020
领券