原始出处:www.cnblogs.com/Charltsing/p/adbpngfix.html

QQ:564955427

adb由于兼容性问题,会把0a替换成0d0a输出到控制台,这会造成png图片解析失败。所以,对adb shell screencap -p命令直接返回的数据要进行修复。需要注意的是,不同的手机系统返回的可能是0d0d0a,也可能是0d0a,替换的时候需要注意检查。

C#代码如下:

private byte[] Fix0d0d0a(byte[] bytes)
{
long length = bytes.Length;
byte[] bytesfix = new byte[length]; int idx = 0;
int count = 0;
int idxFirst0D = 0;
int idxFirst0A = 0;
bool is0D = false;
for (int i = 0; i < length; i++)
{
byte b = bytes[i];
if (b == 0x0d && idxFirst0D == 0)
{
idxFirst0D = i;
is0D = true;
}
if (b == 0x0a && idxFirst0A == 0)
{
idxFirst0A = i;
}
if (i > 2 && b == 0x0a && is0D)
{
count++;
idx = idx - (idxFirst0A - idxFirst0D - 1);
bytesfix[idx] = b;
idx++;
}
else
{
bytesfix[idx] = b;
idx++;
}
if (b == 0x0d)
is0D = true;
else
is0D = false;
}
byte[] bytesfinal = new byte[length-count* (idxFirst0A - idxFirst0D-1)];
Buffer.BlockCopy(bytesfix, 0, bytesfinal, 0, bytesfinal.Length);
return bytesfinal;
}

  注意:如果是锤子手机,需要去掉前面的字符串。

有问题欢迎qq联系

安卓调试工具adb返回的png截图,直接输出到控制台的修复问题的更多相关文章

  1. 安卓activity捕获返回button关闭应用的方法

    安卓activity捕获返回button关闭应用的方法 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { //按下键盘 ...

  2. adb logcat查看某个进程的输出日志

    adb logcat查看某个进程的输出日志 adb logcat 默认是没有这个功能的,我实现了一个小bash函数,添加到你$HOME/.bashrc 文件中: # 作用:能够通过进程名显示log # ...

  3. sql server使用sp_executesql返回拼接字符串里面的输出参数

    问题: 今天一同事请教博主,他拼接了一个语句,select表格形式数据,然后使用@@rowcount获取到行数. 但他又有这样特别的需求:想只获取行数而不返回表格数据结果,因为是while循环,不想返 ...

  4. 安卓手机ADB驱动干什么的?

    Adb驱动是什么意思? /div> Adb是英文Android Debug Bridge的英文缩写,是debug工具,如果不是写IT的可能也很难理解debug的意思.说的直白一点就是Adb就是手 ...

  5. 安卓虚拟机adb shell sqlite3数据库

    adb shell 连接: //http://www.cnblogs.com/xiaobo-Linux/ Android把数据都存放在data/data目录下. 我们使用cd命令转到data/data ...

  6. 安卓测试之ADB命令

    什么是ADB: adb的全称为Android Debug Bridge,就是起到调试桥的作用.借助adb工具,我们可以管理设备或手机模拟器的状态.还可以进行很多手机操作,如安装软件.系统升级.运行sh ...

  7. 夜神安卓模拟器adb命令详解

    https://www.yeshen.com/faqs/H15tDZ6YW 一.如何找到adb? 安装夜神安卓模拟器后,电脑桌面会有"夜神模拟器"的启动图标,鼠标右键--打开文件所 ...

  8. vue里监听安卓的物理返回键

    Hybrid App中,原生内嵌H5单页,由于安卓是有物理返回键的,按安卓物理返回键的时候会返回到上一个路由. 实际中需求是:当有弹层的时候,按物理返回键是关闭弹层,是页面的时候才执行返回上一个路由, ...

  9. 安卓笔记-adb指令、打包安装

    adb install -r -s xxx.apk      -r重装  -s 安装到sd卡 安装软件 adb uninstall -k 包名           -k 只卸载程序不清除数据 adb ...

随机推荐

  1. 【响应式编程的思维艺术】 (1)Rxjs专题学习计划

    目录 一. 响应式编程 二. 学习路径规划 一. 响应式编程 响应式编程,也称为流式编程,对于非前端工程师来说,可能并不是一个陌生的名词,它是函数式编程在软件开发中应用的延伸,如果你对函数式编程还没有 ...

  2. 【转载】C#处理空格和换行

    使用C#处理字符串是一个常见的情况,当字符串中含有空格或者换行符号的时候,如果业务需要,我们可以通过相应的方法将之处理掉,处理成不含空格和换行符号的字符串,处理的过程使用到正则表达式. 具体函数处理的 ...

  3. JavaScript 基础结构

    注释      代码注释可以使用//或者/* */ // 这是一个单行注释 /* * 这是 * 一个 * 多行 * 注释 */ 变量      变量用于存储数据,在同一作用域内变量不得重名,定义语法: ...

  4. Android项目刮刮奖详解(三)

    Android项目刮刮奖详解(二) 前言 上一期我们已经实现了一个简易的刮刮卡功能,这一期我们来将其完善一下 目标 将刮刮奖的宽高改为合适高度 将刮刮奖位置居中 将信息层的图片换成文字(重点) 实现 ...

  5. 【转】Android 开发规范(完结版)

    摘要 1 前言 2 AS 规范 3 命名规范 4 代码样式规范 5 资源文件规范 6 版本统一规范 7 第三方库规范 8 注释规范 9 测试规范 10 其他的一些规范 1 前言 为了有利于项目维护.增 ...

  6. 【代码笔记】Web-CSS-CSS 教程

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  7. 常用Shell脚本命令(备忘)

    此处纪录一些个人常用的Shell命令,留作复用 Linux 必备软件 Tmux 终端复用神器 zsh 无比强大Shell运行环境 oh my zsh 搭配zsh食用 uGet Linux下载工具 Do ...

  8. Setup script exited with error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 解决办法

    今天在Ubuntu16.04 上安装python包的时候,出现了这个坑爹的问题: 解决办法,内容总结如下 情况是这样,报错是因为没有把依赖包安装全,报错情况如下图: 解决办法,先安装一些必须的依赖: ...

  9. Workspace in use or cannot be created, choose a different one.

      eclipse 使用一段时间后,有时会因为一些故障自己就莫名奇妙的关闭了,再打开时有时没有问题,有时有会提示错误 Workspace Unavailable: Workspace in use o ...

  10. C# 一般处理程序ashx接收服务端post过来json数据

    这个和前端js的接收方式有点不一样,前端接收用request.form["xxx"]即可