国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙二進(jìn)制數(shù)組創(chuàng)建

王程 ? 來(lái)源:jf_75796907 ? 作者:jf_75796907 ? 2024-01-31 15:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

背景

c++層數(shù)據(jù)都是二進(jìn)制,需要轉(zhuǎn)換成arrayBuffer透?jìng)鞯絜ts層給業(yè)務(wù)使用,但是鴻蒙的使用下面兩個(gè)api創(chuàng)建出來(lái)的二進(jìn)制數(shù)組數(shù)據(jù)都是錯(cuò)誤的。

接口

napi_create_arraybuffer: 這個(gè)接口只能創(chuàng)建空的二進(jìn)制數(shù)組,沒(méi)辦法把char的內(nèi)容丟進(jìn)去創(chuàng)建
napi_create_external_arraybuffer: 這個(gè)接口支持創(chuàng)建二進(jìn)制數(shù)組時(shí)候丟入初始化參數(shù),但是如果你data是非unsigned char。你里面的數(shù)據(jù)就會(huì)轉(zhuǎn)換錯(cuò)亂,導(dǎo)致二進(jìn)制的數(shù)據(jù)無(wú)法再轉(zhuǎn)換成正確的字符串

代碼實(shí)例

錯(cuò)誤的代碼例子:

//接收ets傳入的string字符串
char type[64] = {0};
size_t eventTypeLen = 0;
napi_get_value_string_utf8(env, args[0], type, sizeof(type), &eventTypeLen);

//錯(cuò)誤的二進(jìn)制數(shù)組寫法
napi_value result1 = nullptr;
napi_create_external_arraybuffer(env, data, eventTypeLen, [](napi_env env, void *data, void *hint) {}, nullptr, &result1);
//這里返回的二進(jìn)制數(shù)組到ets層,是無(wú)法正常轉(zhuǎn)換回字符串的
return result1;

正確的代碼例子:

//接收ets傳入的string字符串
char type[64] = {0};
size_t eventTypeLen = 0;
napi_get_value_string_utf8(env, args[0], type, sizeof(type), &eventTypeLen);
//正確,把type轉(zhuǎn)換成無(wú)符號(hào)的char*,然后作為參數(shù)傳入就可以得到正確二進(jìn)制流
unsigned char *arrayBuffer = new unsigned char[sizeof(type)];
//復(fù)制內(nèi)容
memcpy(arrayBuffer, reinterpret_cast(type), sizeof(type));
napi_create_external_arraybuffer(
env, arrayBuffer, eventTypeLen, [](napi_env env, void *data, void *hint) {}, nullptr, &result1);
//這里返回的二進(jìn)制數(shù)組到ets層,正常轉(zhuǎn)換回字符串的
return result1;

創(chuàng)建方案二

1.方案二是創(chuàng)建一個(gè)空的arrayBuffer,然后給里面的data進(jìn)行賦值,但是比較詭異我沒(méi)想懂的是,napi_create_arraybuffer 的第三個(gè)參數(shù)data,并沒(méi)有和第四個(gè)參數(shù)napi_value關(guān)聯(lián),但是修改data的值確能應(yīng)該arrayBuffer的值

//napi_create_arraybuffer的源碼
NAPI_EXTERN napi_status napi_create_arraybuffer(napi_env env, size_t byte_length, void** data, napi_value* result)
{
    NAPI_PREAMBLE(env);
    CHECK_ARG(env, data);
    CHECK_ARG(env, result);

    auto vm = reinterpret_cast(env)->GetEcmaVm();
    uint8_t** values = (uint8_t**)(data);
    Local res = panda::ArrayBufferRef::New(vm, byte_length);
    if (values != nullptr) {
        *values = reinterpret_cast(res->GetBuffer());
    }
    *result = JsValueFromLocalValue(res);

    return GET_RETURN_STATUS(env);
}

2.第二種創(chuàng)建方法例子

//接收ets傳入的string字符串
char type[64] = {0};
size_t eventTypeLen = 0;
napi_get_value_string_utf8(env, args[0], type, sizeof(type), &eventTypeLen);


    napi_value result2 = nullptr;
    void* data = nullptr;
    napi_create_arraybuffer(env, sizeof(type), &data, &result2);
    memcpy(data, type, sizeof(type));
    
    return result2;


審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    9519

    瀏覽量

    157020
  • 鴻蒙
    +關(guān)注

    關(guān)注

    60

    文章

    2963

    瀏覽量

    45883
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2153

    瀏覽量

    36041
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何使用Arduino和LED矩陣構(gòu)建簡(jiǎn)單的二進(jìn)制時(shí)鐘

    在這個(gè)初學(xué)者項(xiàng)目中,我們通過(guò)構(gòu)建LED矩陣和使用Arduino來(lái)創(chuàng)建二進(jìn)制時(shí)鐘。
    的頭像 發(fā)表于 07-25 18:51 ?6609次閱讀

    二進(jìn)制顯示數(shù)組

    請(qǐng)教各位大神如何將一個(gè)十進(jìn)制數(shù)組變成二進(jìn)制顯示??我是初學(xué)者,在數(shù)組屬性里的顯示格式里,二進(jìn)制不可選,是不是需要數(shù)據(jù)轉(zhuǎn)換???請(qǐng)各位大神不吝
    發(fā)表于 11-28 11:21

    二進(jìn)制相對(duì)調(diào)相(二進(jìn)制差分調(diào)相2DPSK)的工作原理

    二進(jìn)制相對(duì)調(diào)相(二進(jìn)制差分調(diào)相2DPSK)的工作原理
    發(fā)表于 10-21 13:01 ?3473次閱讀
    <b class='flag-5'>二進(jìn)制</b>相對(duì)調(diào)相(<b class='flag-5'>二進(jìn)制</b>差分調(diào)相2DPSK)的工作原理

    二進(jìn)制

    二進(jìn)制   二進(jìn)制與十進(jìn)制的區(qū)別在于數(shù)碼的個(gè)數(shù)和進(jìn)位規(guī)律有很大的區(qū)別,顧名思義,二進(jìn)制的計(jì)數(shù)規(guī)律為逢二進(jìn)一,是以2為基數(shù)的計(jì)數(shù)體制。10這
    發(fā)表于 04-06 23:48 ?8930次閱讀
    <b class='flag-5'>二進(jìn)制</b>

    二進(jìn)制變化彩燈

    二進(jìn)制變化彩燈
    發(fā)表于 04-09 17:52 ?1608次閱讀
    <b class='flag-5'>二進(jìn)制</b>變化彩燈

    C語(yǔ)言入門教程-二進(jìn)制文件

    二進(jìn)制文件 二進(jìn)制文件非常類似于結(jié)構(gòu)體數(shù)組,只不過(guò)這些結(jié)構(gòu)體被保存在一個(gè)磁盤文件而非內(nèi)存數(shù)組中。因?yàn)槭鞘褂么疟P保存二進(jìn)制文件中的結(jié)構(gòu)體,所
    發(fā)表于 07-29 14:24 ?2249次閱讀

    二進(jìn)制時(shí)鐘電路

    二進(jìn)制時(shí)鐘電路
    發(fā)表于 09-11 11:22 ?3332次閱讀
    <b class='flag-5'>二進(jìn)制</b>時(shí)鐘電路

    二進(jìn)制編碼和二進(jìn)制數(shù)據(jù)

    二進(jìn)制編碼和二進(jìn)制數(shù)據(jù)   二進(jìn)制編碼是計(jì)算機(jī)內(nèi)使用最多的碼制,它只使用兩個(gè)基本符號(hào)"0"和"1",并且通過(guò)由這兩個(gè)符號(hào)組成的
    發(fā)表于 10-13 16:22 ?5196次閱讀

    什么是二進(jìn)制計(jì)數(shù)器,二進(jìn)制計(jì)數(shù)器原理是什么?

    什么是二進(jìn)制計(jì)數(shù)器,二進(jìn)制計(jì)數(shù)器原理是什么? 計(jì)數(shù)器是數(shù)字系統(tǒng)中用得較多的基本邏輯器件。它不僅能記錄輸入時(shí)鐘脈沖的個(gè)數(shù),還可以實(shí)現(xiàn)
    發(fā)表于 03-08 13:16 ?3.2w次閱讀

    二進(jìn)制電平,什么是二進(jìn)制電平

    二進(jìn)制電平,什么是二進(jìn)制電平 在二進(jìn)制數(shù)字通信系統(tǒng)中,每個(gè)碼元或每個(gè)符號(hào)只能是“1”和“0”兩個(gè)狀態(tài)之一。若將每個(gè)碼元可能取的狀態(tài)增
    發(fā)表于 03-17 16:51 ?2715次閱讀

    進(jìn)制數(shù)的二進(jìn)制編碼

    進(jìn)制數(shù)的二進(jìn)制編碼     在人機(jī)交互過(guò)程中,為了既滿足系統(tǒng)中使用二進(jìn)制數(shù)的要求,又適應(yīng)人們使用十進(jìn)制數(shù)的習(xí)慣
    發(fā)表于 05-02 19:04 ?1.1w次閱讀

    二進(jìn)制加法程序【匯編版】

    二進(jìn)制加法程序【匯編版】二進(jìn)制加法程序【匯編版】二進(jìn)制加法程序【匯編版】二進(jìn)制加法程序【匯編版】
    發(fā)表于 12-29 11:02 ?0次下載

    二進(jìn)制加法程序【C語(yǔ)言版】

    二進(jìn)制加法程序【C語(yǔ)言版】二進(jìn)制加法程序【C語(yǔ)言版】二進(jìn)制加法程序【C語(yǔ)言版】二進(jìn)制加法程序【C語(yǔ)言版】
    發(fā)表于 12-29 11:03 ?0次下載

    LabVIEW二進(jìn)制數(shù)組轉(zhuǎn)換二進(jìn)制字符串的詳細(xì)資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是LabVIEW二進(jìn)制數(shù)組轉(zhuǎn)換二進(jìn)制字符串的詳細(xì)資料免費(fèi)下載,需要的下載吧。
    發(fā)表于 11-29 08:00 ?16次下載
    LabVIEW<b class='flag-5'>二進(jìn)制</b><b class='flag-5'>數(shù)組</b>轉(zhuǎn)換<b class='flag-5'>二進(jìn)制</b>字符串的詳細(xì)資料免費(fèi)下載

    LabVIEW數(shù)值數(shù)組轉(zhuǎn)換二進(jìn)制字符串的詳細(xì)資料概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是LabVIEW數(shù)值數(shù)組轉(zhuǎn)換二進(jìn)制字符串的詳細(xì)資料免費(fèi)下載,需要的下載吧。
    發(fā)表于 11-29 08:00 ?61次下載
    LabVIEW數(shù)值<b class='flag-5'>數(shù)組</b>轉(zhuǎn)換<b class='flag-5'>二進(jìn)制</b>字符串的詳細(xì)資料概述