正在从LWIP服务器响应中检索16位整数
Retrieving 16-bit integer from LWIP server response
在服务器端,我有以下循环,它取一个16位整数(从0到639),并将其分成两个8位字符,以提供缓冲区(1280字节)。然后通过TCP-IP将其发送到客户端。
.c
unsigned int data2[1000];
char *p;
len = generate_http_header(buf, "js", 1280);
p = buf + len;
for (j=0; j<640; j++)
{
char_out[1]=(unsigned char)(data2[j]&0x00FF);
char_out[0]=(unsigned char)((data2[j]>>8)&(0x00FF));
*p=char_out[0];
p=p+1;
*p=char_out[1];
p=p+1;
}
....
tcp_write(pcb, buf, len, 1);
tcp_output(pcb);
在客户端,我想从JSON对象中检索16位整数。我想出了这个解决方案,但出现了一些问题,我无法获得所有的整数值(0到639)。
.js
var bin=o.responseText;
for(i=0;i<1000;i=i+2)
{
a=bin[i].charCodeAt();
b=bin[i+1].charCodeAt();
// Get binary representation.
a=parseInt(a).toString(2);
a=parseInt(a);
//alert('a(bin) before:'+a);
b=parseInt(b).toString(2);
b=parseInt(b);
//padding zeros left.
a=pad(a,8);
b=pad(b,8)
//Concatenate and convert to string.
a=a.toString();
b=b.toString();
c=a+b;
//Convert to decimal
c=parseInt(c,2);
//alert('DECIMAL FINAL NUMBER:'+c)
fin=fin+c.toString();
}
alert('FINAL NUMBER'+fin);
我使用Fire BUG查看来自服务器的HTTP响应:
����������� �
���
������������������� �!�"�#�$�%�&�'�(�)�*�+�,�-�.�/ � 0�1�2�3�4�5�6�7�8�9�:�;�<�=�>�?�@�A�B�C�D�E�F�G�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�' �]� ^�_�`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvxyz{|}~���������������������������������������������������������������������������������������������������������������������������������
"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV�����������QR���� ��Ps������������$���������������P�������������
运行.js代码后,我得到了从0到127(0,1,2,…127)的正确数字,但从128到256,我得到的所有数字都等于255,而不是(128129130…256)。在256之后,每个数字都可以按顺序(257,…639)。我认为问题与函数charCodeAt()有关,该函数返回字符的Unicode。出于某种原因,考虑到我有相同的字符,它总是返回255,但这是不可能的,因为服务器正在发送"129130131…255"。知道会发生什么吗?在使用实际解决方案之前,我尝试直接从JSON对象中检索16位整数,但无法使用LUT删除依赖项。如何在o.responseText="abcdefgh…"中获得每个字符的8位,而不使用LUT来查找等效的ASCII代码,然后再查找二进制表示?我认为使用位运算符&但在这种情况下,仍然需要首先转换为二进制等价物,然后转换为整数。如何在java脚本中直接对字符串执行逐位操作?
看起来您的数据显示为utf8。utf8与ascii兼容,因此所有ascii字符都显示良好(最多127个字符),其余字符在utf8中无效,因此显示数据的程序用无效字符替换字符�
替换这些无效字符,尝试将客户端(接收程序)编码更改为iso-8859-1。
- 使用JSP从服务器检索和显示图像
- 通过Magento的网络服务检索运费
- 在网络上录制音频,预设:16000Hz 16位
- 用0xFFFF屏蔽16位值
- 将数字转换为16位浮点(存储为字节)并返回
- 正在从LWIP服务器响应中检索16位整数
- 从谷歌 v3 API 响应中检索前两位数字
- 在 Javascript 中将 32 位 WAV 转换为 16 位 WAV
- 如何向字符串添加连字符(将其格式化为 16 位序列号)
- 如何检索 BSTR* picBytes 并在任何 HTML 脚本中显示位图图片
- JavaScript-信用卡16位验证,并且必须是无效的数字
- 用于16位数字和正斜杠的正则表达式
- 如何使用recorder.js将音频文件质量更改为16位、立体声8000 Hz
- JQuery可以创建一个随机的16位数字
- React Native:如何在Javascript中格式化mm/yy和间隔16位卡号的支付格式
- Javascript十进制(低16位)到十进制
- jQueryajax调用webservice以检索位图错误,代码为200
- JavaScript字符串如何成为一组“元素”?的16位无符号整数值
- 转换32位无符号Real"数据类型(分成两个16位签名字)到javascript
- 如何检索一个月中每一天的天气状况和位修饰符