flutter byte(Unit8List) 转 ios Uint8[] 转 c语言char*

flutter byte(Unit8List) 转 ios Uint8[] 转 c语言char*最近用flutter写ios线上项目,有一个功能让把设备传来的数据加密,而这个坑爹的加密的方法是c语言写的,用flutter各种尝试,始终不能还原c的加密过程,只能调用ios原生代码,然后用原生代码调用c语言加密,然后将加密的数据返回过程是这么个过程,但是3种语言的类型各不相同,所以中间就出现来各种转换,本人一个安卓屌丝,碰到swift和c语言也是一脸懵逼,很简单的东西我搞了2天,先看…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

最近用flutter写ios线上项目,有一个功能让把设备传来的数据加密,而这个坑爹的加密的方法是c语言写的,用flutter各种尝试,始终不能还原c的加密过程,  只能调用ios原生代码,然后用原生代码调用c语言加密,然后将加密的数据返回

过程是这么个过程,但是3种语言的类型各不相同,所以中间就出现来各种转换,本人一个安卓屌丝,碰到swift 和 c语言也是一脸懵逼,很简单的东西我搞了2天,先看下各数据的对比

flutter java swift c语言
Uint8List byte[]

FlutterStandardTypedData

char[]

 

1. flutter 发送Uint8List (java种的byte)数据到ios端  ,ios将Uint8List转成FlutterStandardTypedData

let uintInt8List =  call.arguments as! FlutterStandardTypedData

2. 将FlutterStandardTypedData转成ios平台的byte ->Uint8数组

var byte = [UInt8](uintInt8List.data)

3. 将Uint8 (ios的byte)转成c语言用的char[]数组指针,(可能有更好的转换方法,但是此方法也可行)

var pointer = UnsafeMutablePointer<UInt8>.allocate(capacity: 4)
pointer.advanced(by: 0).pointee = byte[0]
pointer.advanced(by: 1).pointee = byte[1]
pointer.advanced(by: 2).pointee = byte[2]
pointer.advanced(by: 3).pointee = byte[3]

4. 用C语言加密后 获取到指针,将指针转换成ios平台的Data

//加密结果接收的指针
let resoultPointer = UnsafeMutablePointer<UInt8>.allocate(capacity: 4)
//加密方法
id_crc(pointer,resoultPointer)
//将指针转成ios的Data, Data是用来转成flutter的byte       
let nsdata = Data(bytes: resoultPointer, count: 4)

5. 将ios的Data转换成FlutterStandardTypedData(这个就是flutter的Unit8List,只不过在ios上叫这个名字),我们只要转成FlutterStandardTypedData,flutter就能直接用

//转成flutter的可用数据Uint8List--->FlutterStandardTypedData
let resoultBYTE = FlutterStandardTypedData(bytes: nsdata)
//返回数据
//result(resoultBYTE);

到这里 flutter   swift   ios 三种语言间的byte转换就完成了

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192877.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Mysql日期和时间函数不求人

    Mysql日期和时间函数不求人

    2021年4月29日
    135
  • es6数组方法图解

    es6数组方法图解最近接触了一些web前端开发人员,发现还是很多人不适用es6提供的语义化api。下面分享下看到的图解es6数组方法。很形象的es6数组方法解释:

    2022年6月6日
    35
  • Django(61)认证组件源码分析

    Django(61)认证组件源码分析认证组件源码入口APIView下的dispatch下的self.initial(request,*args,**kwargs),源码如下:definitial(self,request,

    2022年8月7日
    7
  • INTEGER PRIMARY KEY AUTOINCREMENT 和 INTEGER PRIMARY KEY 区别

    INTEGER PRIMARY KEY AUTOINCREMENT 和 INTEGER PRIMARY KEY 区别转自网络 地址不可考 谢谢原作者 如有冒犯 立即删除 Sqlite 中 INTEGERPRIMA 和 rowid INTEGERPRIMA 的使用 nbsp 在用 sqlite 设计表时 每个表都有一个自己的整形 id 值作为主键 插入后能直接得到该主键 nbsp 因为 sqlite 内部本来就会为每个表加上一个 rowid 这个 rowid 可以当成一个隐含的字段使用 nbsp 但

    2025年9月2日
    4
  • Maven 配置篇之 pom.xml

    Maven 配置篇之 pom.xml

    2021年7月27日
    55
  • 大数据分析系统[通俗易懂]

    大数据分析系统[通俗易懂]1. 概念、分类数据分析系统的主要功能是从众多外部系统中,采集相关的业务数据,集中存储到系统的数据库中。系统内部对所有的原始数据通过一系列处理转换之后,存储到数据仓库的基础库中;然后,通过业务需要进行一系列的数据转换到相应的数据集市,供其他上层数据应用组件进行专题分析或者展示。根据数据的流转流程,一般会有以下几个模块:数据收集(采集)、数据存储、数据计算、数据分析、数据展示等等。当然也会有…

    2022年5月8日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(1条)

  • 匿名的头像
    匿名 2022年11月3日 上午11:29

    安卓的呢

关注全栈程序员社区公众号