2013-09-28 2 views
3

У меня есть функция в JavaScript, которая ожидает, что массив байтов будет передан в него из кода Native C++. Например:Печать шестнадцатеричных или десятичных значений массива байтов в JavaScript

function OnEvent(event, data1) 
{ 
    console.log("data1[0] = " + data1[0]); 
} 

Я хотел бы, чтобы он печатал 0x55 или даже десятичное его значение. По какой-то причине, я вижу следующее в журнале консоли:

enter image description here

Как я могу напечатать шестнадцатеричное значение байта или даже десятичного значения без печати символа?


UPDATE

Я пошел по ссылке ниже, благодаря Vinothbabu. Я использовал функцию распаковки:

function unpack(str) { 
    var bytes = []; 
    $("#homePage").append("str.length = " + str.length + "<br>"); 

    for(var i = 0, n = str.length; i < n; i++) { 
     var char = str.charCodeAt(i); 
     $("#homePage").append("char is equal to " + char + "<br>"); 
     bytes.push(char >>> 8, char & 0xFF); 
    } 

    return bytes; 
} 

Он печатает «символ равен 65533» и значение «байт» выводит «255, 253», который означает, что он имеет значение 0xFFFD.

Это не данные/полезная нагрузка, которую я ожидал. Вы знаете, почему есть 2 байта?

+0

Try data1 [0] .ToString (16) – bfavaretto

+1

http://codereview.stackexchange.com/questions/3569/pack-and-unpack-bytes -to-strings – Thalaivar

+0

Спасибо Vinothbabu. Я следил за вашей ссылкой, связанной с упаковкой/распаковкой. Однако, используя unpack(): 'code' function unpack (str) { var bytes = []; $ ("# homePage"). Append ("str.length =" + str.length + "
"); для (var i = 0, n = str.length; i "); bytes.push (char >>> 8, char & 0xFF); } обратные байты; } 'code' Он печатает« char равно 65533 », а байты выводятся 255, 253, что означает, что оно имеет значение 0xFFFD – codeshark

ответ

6

Я считаю, что это будет делать трюк:

console.log("data1[0] = " + data1[0].toString(16)); 
Смежные вопросы