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转换就完成了

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 净推荐值(NPS)完整行动指南[通俗易懂]

    净推荐值(NPS)完整行动指南[通俗易懂]前言随着越来越多的SaaS公司想要提高客户忠诚度,使得衡量忠诚度的方法得到了发展,其中最受欢迎的方式之一就是净推荐值(NPS)。实际上,全球有55%的公司使用NPS来衡量客户满意度和忠诚度。净推荐值不是一个“虚荣指标”,当你与客户的工作发生交叉引用时,NPS可以用来推断客户实际上使用感到高兴的情况。你可以利用这些“行为模式”的见解来指导你的客户使用产品。因此,NPS可以指导新手入门和产品开发,帮助你减少客户流失并提高留存率。是否想知道如何衡量你的NPS?如何通过客户数据的交叉引用以指导产品.

  • vdbench的作用_Vdbench—-文件系统IO,一致性校验,常见问题

    vdbench的作用_Vdbench—-文件系统IO,一致性校验,常见问题Linux环境—-多客户联机运行注意,此时会出现avahi-daemon服务的报错日志信息:关闭即可:systemctlstopavahi-daemonavahi-daemon是一种Linux操作系统上运行在客户机上实施查找基于网络的Zeroconfservice的服务守护进程。该服务可以为Zeroconf网络实现DNS服务发现及DNS组播规范。用户程序通过LinuxD-Bus信息…

  • break 与continue语句的区别_return用法

    break 与continue语句的区别_return用法来源:http://blog.csdn.net/u014612521/article/details/42720987break可以离开当前switch、for、while、dowhile的程序块,并前进至程序块后下一条语句,在switch中主要用来中断下一个case的比较。在for、while与dowhile中,主要用于中断目前的循环执行。continue的作用与

  • Mongo散记–聚合(aggregation)&amp; 查询(Query)

    Mongo散记–聚合(aggregation)&amp; 查询(Query)

  • centos7上安装kafka教程「建议收藏」

    centos7上安装kafka教程「建议收藏」一、centos7安装java8去oracle官网下载:https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.htmltar-zxvfjdk-8u281-linux-x64.tar.gzmkdir/usr/javamvjdk1.8.0_281/usr/java环境变量配置:打开/etc/profile配置文件vi/etc/profile在配置文件末尾添加如下配置:exportJAV

  • c#生成静态html文件,封装类

    由于这段时间比较轻松,于是想到很多的企业网站,新闻网站需要将页面静态化,于是写了个封装类来实现静态文件的生成,思路比较简单,但未完善,网友可根据自己的思路将此类扩展,运用了简单工厂模式(本来刚开始看设

    2021年12月20日

发表回复

您的电子邮箱地址不会被公开。

评论列表(1条)

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

    安卓的呢

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