2 guang nate Guang_Nate 于 2015.07.09 15:39 提问

16进制的正数为何显示为10进制数之后就为负数,如何使他总为正数,在线等!!大神,我很急!!

如下就是读取NFC标签数据的代码,并在调试窗口将读出的数据显示出来
我的问题是:NFC里面的数据本来就全是正数,但是读取出来后在电脑端显示却为负数,(我猜测是不是,在NFC里面的数全是16进制的,然后手机端读取出来后显示为10进制的数时,出现编码错误,从而导致变为负数了)那么如何将读取出的数据全部显示为正数,求大神赐教,在线等,急!!
byte[] result = tagUtil.readAllPages(intent, false);
Log.d("i", "读取全部块");
for (int i = 0; i < result.length; i++)
Log.e("读出全部page", "byte " + i + " is " + result[i]);

5个回答

dongfuye
dongfuye   2015.07.09 16:12
已采纳

当一个byte在128-255之间时,就是作为负数解释的,打印时把他解释为正数就可以了
(unsigned int)result[i]
Log.e("读出全部page", "byte " + i + " is " + (unsigned int)result[i]);

caozhy
caozhy   Ds   Rxr 2015.07.09 15:45

用unsigned int

Eric0936
Eric0936 用unsigned int
大约 3 年之前 回复
caozhy
caozhy   Ds   Rxr 2015.07.09 15:45

否则>2^31就会变成负的。

frank_20080215
frank_20080215   2015.07.09 17:16

用unsigned int, int是有符号的。NFC标签读出后,以补码转换。所以出现这个问题

baidu_25226775
baidu_25226775   2015.07.10 10:08

因为byte的取值范围是-128 ~ 127 ,你只要把 result[i]强制类型转换为无符号类型就可以了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
16进制浮点数(正和负数)转化成十进制显示!绝对成功显示
在工作需要时,需要引功能,网上查了半天,基本都是正数浮点数可以的,但负数浮点数就报错了,通过查询资料和修改部分函数,完成完全转化功能,经测试OK 转化思路:  16进制的字符串>>>转化二进制的字符串>>>由二进制转化成带符号的浮点数(32位和64位都可通用).,分享给需要的朋友! /** * 16进制字符串转化二进制字符中 * * @param hexString
排序使得数组负数在正数左边且按照原来的顺序
假设一整型数组存在若干正数和负数,现在通过某种算法使得该数组的所有负数在正数的左边,且保证负数件和正数间元素相对位置不变。时空复杂度要求分别为:o(n),o(1) 例如     -3 4 2 -1 7 3 -5  排序后    -3 -1 -5 4 2 7 3 采用整体冒泡的思想,先从后找到第一个负数,然后把这一个负数看成一个“元素”,再看这个负数前面是正数还是负数,如果是负数,
将数组里的负数排在数组的前面,正数排在数组的后面。但不改变原先负数和正数的排列顺序。
题目描述:将数组里的负数排在数组的前面,正数排在数组的后面。但不改变原先负数和正数的排列顺序。例:input: -5,2,-3, 4,-8,-9, 1, 3,-10;output: -5, -3, -8, -9, -10, 2, 4, 1, 3。 算法描述: ①设定两个计数器begin、end,其中begin始终指向数组中的第一个负数,end始终指向位于begin之后的第一个正数。然后把b
调整数组 使得数组中负数排在前面正数排在后面,并且正数和负数的相对位置不变 (递归思路)
假设一整型数组存在若干正数和负数,现在通过某种算法使得该数组的所有负数在正数的左边,且保证负数和正数间元素相对位置不变。时空复杂度要求分别为:o(n)和o(1) 解题思路: 假设X代表正数,Y代表负数,下标代表正负数的序列位置,数组大小为arraySize 设有一数组 [X1, Y1, Y2, X2, Y3, Y4, X3, Y5, X4, X5]  (可以理解为 [1, -1, -
java二进制正数和负数取反
“反码”,“取反”,“按位取反(~)”,这3个概念是不一样的。 取反:0变1,1变0 反码:正数的反码是其本身,对于负数其符号位不变其它各位取反(0变1,1变0) 按位取反(~): 这将是下面要讨论的。 要弄懂这个运算符的计算方法,首先必须明白二进制数在内存中的存放形式,二进制数在内存中是以补码的形式存放的。 另外正数和负数的补码不一样,正数的补码、反码都是其本身,负数的反码是符号位不变
java 判断输入的是正数还是0还是负数(正数-10,负数+10)
输入一个整数,如果是正数就减去10,负数就加上10,然后显示。
C语言 负数除以正数, 与正数除以负数的 余数和商 的正负
例如 -3 / 2 = -1;  -3 % 2 = -1;      3 / (-2) = -1;  3 % (-2) = 1;        一开始我从 余数 思考,结果感到迷惑。后来查资料知道 余数的正负和被除数保持一致。 做ZM的一道题时,正好碰到 6+-2/3 是否= 5的题,联想到余数正负的问题,发现直接从除法的商思考最简单。 3/2 = 1,无论除数还是被除数是负,商即为负
负数排在正数前面,
转自:http://qing.blog.sina.com.cn/1570303725/5d98eeed33000hcb.html 一个未排序整数数组,有正负数,重新排列使负数排在正数前面,并且要求不改变原来的正负数之间相对顺序。思考的过程就略去了,直接说结果吧。我想到的算法,空间复杂度为O(1),时间复杂度为O(N*logN)。首先,定义这样一个过程为“翻转”:(a1,a2,…,am,b1,b2,
= 问题 = 请问如何把16进制数转化为10进制数显示输出?谢谢!
 = 问题 =   请问如何把16进制数转化为10进制数显示输出?谢谢!   --------------------------------------------------------------------------------  16进制数在内存INPUT处,使用大写字母,结果在OUTPUT中  最大为双字  大致如下:  input  db  "23AF ",0  w1   
mips汇编语言之将十进制整数转换为十六进制输出
代码在pcspim 7.0下编译通过############# programed by stevie zou#######  10-15-2008 ############## text segment #################           .text           .globl     mainmain:     li    $v0,   5           sys