file-type

JavaScript中uuid转十六进制字符串的库:uuid2hex

下载需积分: 35 | 125KB | 更新于2024-12-03 | 64 浏览量 | 0 下载量 举报 收藏
download 立即下载
在编程领域,特别是在处理网络数据交换、分布式系统或数据库系统时,UUID(Universally Unique Identifier,通用唯一识别码)是一种广泛使用的标识符格式。UUIDs的主要目的是确保在分布式系统中生成的标识符的唯一性,即使在多台计算机或多个系统之间也是如此。 从标题“uuid2hex:uuid(ArrayBufferDataViewBuffer)->字符串”和描述“uuid2hex uuid(ArrayBuffer / DataView / Buffer)->字符串”中,我们可以提炼出以下几个关键知识点: 1. **UUID的概念**:UUID是一种由32个十六进制数字组成的36字符字符串,包含四个连字符,形式为8-4-4-4-12,例如:“123e4567-e89b-12d3-a456-***”。它提供了一个在广阔空间内几乎唯一性的标识符,用于需要唯一性而不依赖于中央注册机构的场景。 2. **二进制数据表示**:在计算机中,数据有时需要以二进制形式表示。ArrayBuffer、DataView和Buffer是JavaScript中用于处理二进制数据的几种类型。 - **ArrayBuffer**:它是一种用于表示通用的、固定长度的原始二进制数据缓冲区。ArrayBuffer对象用来表示一段二进制数据,但不能直接操纵,需要通过视图(如TypedArray视图或DataView视图)来读取或写入数据。 - **DataView**:DataView是一个底层接口,提供对ArrayBuffer对象的读写访问,支持各种不同的数字类型(整型、浮点型、双精度浮点型等),并且可以指定字节序(大端或小端)。 - **Buffer**:在Node.js环境中,Buffer类是一种用于处理二进制数据流的全局类。它不是JavaScript语言的一部分,是Node.js特有的。在JavaScript中,Buffer的实例类似于一个整数数组,但是表示了固定长度的字节序列。 3. **数据转换**:在标题中提到的“uuid2hex”是一个转换函数或库,其作用是将UUID的二进制表示形式转换为十六进制字符串。在Web开发中,尤其是在需要将UUID从后端服务器发送到前端浏览器,或在不同浏览器或Node.js环境中处理时,这种转换十分有用。 4. **JavaScript中的数据处理**:标题中提到的“uuid(ArrayBuffer / DataView / Buffer)->字符串”,说明了该库能够接受的输入格式和期望的输出格式。这是一个非常实际的功能,它使得开发者在使用JavaScript处理来自服务器的数据时,可以将二进制数据转换为更易读的十六进制字符串表示形式。 5. **浏览器兼容性**:提及的标签“chrome”、“ie11”、“JavaScript”揭示了该转换工具的适用范围。显然,“uuid2hex”库需要支持现代浏览器,包括Chrome和Internet Explorer 11(IE11),并且是用JavaScript编写的,这意味着它是跨平台的,可以在支持JavaScript的任何浏览器或环境中运行。 6. **十六进制字符串表示**:十六进制是一种计数系统,使用16个符号(0-9和A-F)来表示数字。每4位二进制数可以通过一个十六进制数字表示,使得数据的表达更为紧凑和易于阅读。因此,将二进制数据转换为十六进制字符串是数据序列化和存储过程中常用的操作。 总结而言,“uuid2hex”是一个JavaScript工具,它可以将二进制格式(ArrayBuffer、DataView或Buffer)表示的UUID转换成易于阅读和处理的十六进制字符串。这个过程对于前端开发者尤其重要,因为它简化了与后端进行数据交互时对二进制数据的处理。此外,其广泛兼容性保证了它可以在多种环境下使用,包括现代浏览器和Node.js环境。

相关推荐

filetype

接口调用说明 此文档为与财税协同平台系统的技术规范,用户按照此规范进行程序开发,并与接口系统对接。此文档主要定义了第三方系统与接口系统进行交互的方式与交互数据内容。 2.请求地址 生产环境地址:https://csxtqd.nuocity.com/open/csxtqd/open-api 3.接口请求报文 3.1请求报文示例 { "globalInfo": { "appId": "应用标志", "version": "接口版本", "interfaceCode": "接口编码", "enterpriseCode": "企业税号", "requestId": "每次请求访问的唯一标识", "dataEncodeType": " data加密方式", "appSec": "签名数据", "timestamp": "时间戳" }, "data": "加密后的业务请求数据" } 3.2请求参数说明 参数 参数说明 类型 长度 必须 说明 appId 应用标志 String 10 是 默认:AHHX version 接口版本 String 4 是 当前V1.0 interfaceCode 接口编码 String 32 是 见接口列表 enterpriseCode 企业税号 String 20 是 requestId 每次请求访问的唯一标识 String 32 是 uuid dataEncodeType data加密方式 String 5 否 0表示为base64;3DES将使用3des加密;为空时默认为base64 appSec 签名数据 String 是 根据签名算法生成(见附件) timestamp 时间戳 String 20 是 格式:yyyy-MM-dd HH:mm:ss 3.3申请安全凭证 在第一次实用API之前,用户需在安徽航信申请安全凭证。安全凭证为财税协同平台系统中平台授权码。 注意:平台授权码是构建API请求的重要凭证,为了您的服务安全,请妥善保存。 3.4生成签名数据 第一步 设所有发送或者接收到的数据为集合 M,将集合 M 内非空参数值的参数按照参 数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。特别注意以下重要规则: ◆ 参数名 ASCII 码从小到大排序(字典序); ◆ 如果参数的值为空不参与签名; ◆ 参数名区分大小写; ◆ 传送的 appSec参数、dataEncodeType参数不参与签名。 ◆ 接口可能增加字段,验证签名时必须支持增加的扩展字段 ◆ data数据需要先通过加密处理后,再参与排序。 第二步 在 stringA 最后拼接上 key=(系统授权码)得到 stringSignTemp 字符串,并对 stringSignTemp 进行 MD5 运算,(MD5 32位 大写)再将得到的字符串所有字符转换为大写,得到 appSec值。 附件,签名生成工具: 【附件】SignUtils.zip 签名示例代码(java) 签名和调用示例代码(js) 3.5 3DES加解密 加密模式ECB 填充方式PKCS5Padding 加密流程: 1.3DES加密json明文 参考:http://tool.chacuo.net/crypt3des2-BASE64.Encode3- 2.替换加密后密文的特殊字符(“/”->”_a”,”+”->”_b”,”=”->”_c”) 解密流程: 1.还原密文中特殊字符(“_a”->”/”,”_b”->”+”,”_c”->”=”) 2.3DES解密密文等到明文 参考:http://tool.chacuo.net/crypt3des 附件:3des加解密工具类 【附件】ThreeDESUtil.zip 4.接口响应报文 4.1响应报文示例 4.2响应参数说明 参数 参数说明 类型 长度 必须 说明 globalInfo appId 应用标志 String 10 是 version 接口版本 String 4 是 interfaceCode 接口编码 String 32 是 enterpriseCode 企业税号 String 20 是 requestId 每次请求访问的唯一标识 String 32 是 uuid dataEncodeType data加密方式 String 5 否 0表示base64;3DES将使用3des加密;为空时默认base64 timestamp 时间戳 String 20 是 格式yyyy-MM-dd HH:mm:ss returnInfo returnCode 返回代码 String 4 是 见返回码说明 returnMsg 返回描述 String 500 否 见返回码说明 4.3返回码说明 returnInfo中returnCode和returnMsg说明 returnCode returnMsg 说明 0000 操作成功 成功 220 未登录或登录状态已失效,请重新登录 如果该接口后台需要登录税局才能进行的,且账号未登录税局会返回该错误 221 未完成认证,请扫码认证 如果开具发票时需要进行实人扫脸认证,且未进行扫脸认证的会返回该错误 9998 发票开具中 同步开具时如果该流水号发票正在开具中,再次请求开具会返回该张发票正在开具中 非0000的都代表操作不成功

filetype

class BluetoothSIMReader( private val device: BluetoothDevice, private val apduHandler: APDUHandler // 第三方SO接口 ) { private var socket: BluetoothSocket? = null private var inputStream: InputStream? = null private var outputStream: OutputStream? = null private val coroutineScope = CoroutineScope(Dispatchers.IO + Job()) // 蓝牙连接协程 fun connect() = coroutineScope.launch { try { withTimeout(15000) { // 使用反射获取RFCOMM通道 socket = device.createRfcommSocketToServiceRecord(UUID.fromString(“00001101-0000-1000-8000-00805F9B34FB”)) socket?.apply { connect() inputStream = this.inputStream.also { it?.use { } } outputStream = this.outputStream.also { it?.use { } } startDataListening() } ?: throw IOException(“Socket initialization failed”) } } catch (e: Exception) { Log.e(“BluetoothSIM”, “Connection failed: ${e.message}”) closeResources() } } // 持续监听数据 private fun startDataListening() = coroutineScope.launch { while (isActive) { try { inputStream?.readBytes()?.let { data -> processReceivedData(data) } } catch (e: IOException) { Log.e(“BluetoothSIM”, “Data read error: ${e.message}”) break } } } // 释放资源 fun disconnect() { coroutineScope.cancel() closeResources() } private fun closeResources() { try { inputStream?.close() outputStream?.close() socket?.close() } catch (e: IOException) { Log.e(“BluetoothSIM”, “Resource close error: ${e.message}”) } } // JNI接口调用示例 interface APDUHandler { external fun processAPDU(data: String): String } } 这段实现示例中external fun processAPDU(data: String): String已由第3方so库通过jni实现,功能为返回SIM卡中响应数据resdata,请提供代码示例如何将resdata内容现在editView中显示

LunaKnight
  • 粉丝: 43
上传资源 快速赚钱