文档章节

Java实现uint8_t/uint16_t/uint32_t

清雨傲客
 清雨傲客
发布于 2016/06/20 14:53
字数 354
阅读 339
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

(转载请注明原文地址:http://blog.csdn.net/vector_yi/article/details/44648997)
Java中,整数可以用byte,short,intlong等类型来表示,并不支持unsigned类型。然而在很多情况下Java也需要处理无符号类型,如翻译C/C++代码,与C/C++进行通讯等,这时就需要用Java来实现uint8_t,uint16_t,uint32_t等类型。

Java实现unsigned类型一般的思路为用更大的存储空间来保存无符号类型,以确保unsigned 最高位不会被Java整型中的符号位所混淆。举个例子:

uint16_t所占的存储空间为16位(即2字节),如果我们用Java中占2字节的short类型来保存uint16_t,肯定会造成最高位的混淆。所以我们可以用占4字节的int类型&0x0000ffff来保存uint16_t

uintN_t中的N表示该类型占用的存储空间为N位:

uintN_t bits bytes 对应Java实现
uint8_t 8 1 short
uint16_t 16 2 int
uint32_t 32 4 long

以下为用Java实现不同无符号类型的具体代码:
uint8_t

    public short getUint8(short s){
        return s & 0x00ff;
    }

uint16_t

    public int getUint16(int i){
        return i & 0x0000ffff;
    }

uint32_t

    public long getUint32(long l){
        return l & 0x00000000ffffffff;
    }

举个例子:
C++代码

 uint16_t n1,n2,n3; n3 = n1 ^ n2;

Java实现

 int n1,n2,n3; n3 = getUint16(n1 ^ n2);

代码纯手打,如有问题还请见谅。

本文转载自:http://blog.csdn.net/vector_yi/article/details/44648997

清雨傲客
粉丝 5
博文 47
码字总数 2538
作品 0
广州
程序员
私信 提问
LPC11U USB Stack GCC编译后运行成功

LPCWare 提供的LPC11U USB stack是用keil和IAR编译的,现在要使用gcc编译需要修改,目前已经在gcc下编译通过,HID设备可以枚举成功。 移植: 主要描述符结构体的单字节对齐,keil和GCC方式不一...

lgl88911
2012/10/13
208
0
uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结,看完全明白了

转自:http://blog.csdn.net/kiddy19850221/article/details/6655066 uint8t / uint16t / uint32t /uint64t 是什么数据类型 在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8t等。...

qq_39584315
2018/03/22
0
0
浅谈Redis五种数据结构的底层原理

概念 Redis作为一个开源的用C编写的非关系型数据库,基于优秀的CRUD效率,常用于软件系统的缓存,其本身提供了以下五种数据格式: string:字符串 list:列表 hash:散列表 set:无序集合 zs...

中关村的老男孩
06/18
5.4K
9
uint8_t uint16_t uint32_t uint64_t

在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8t等。咋一看,好像是个新的数据类型,不过C语言(nesc是C的扩展)里面好像没有这种数据类型啊!怎么又是u又是t的?很多人有这样的...

起始页
2013/12/31
0
0
UINT8_T / UINT16_T / UINT32_T /UINT64_T 是什么数据类型(转)

在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8t等。咋一看,好像是个新的数据类型,不过C语言(nesc是C的扩展)里面好像没有这种数据类型啊!怎么又是u又是t的?很多人有这样的...

Galy_绿
2016/02/23
167
0

没有更多内容

加载失败,请刷新页面

加载更多

如何更改iOS应用程序的名称?

我前几天用一个愚蠢的开发代码名称开始了一个iPhone项目,现在我想改变项目的名称,因为它已经接近完成了。 但是我不知道如何使用Xcode来做这件事,尝试在info.plist文件中更改应用程序的名称...

技术盛宴
35分钟前
4
0
关于win10tensorflow的配置(CPU+GPU)

主要内容 CPU篇 GPU篇 【前期准备与注意事项】 环境:window1064位+python36(37)+CUDA9.0+cuDNN7.6+tensorflow_gpu-1.12.0 软件:anaconda+pycharm 硬件:有nvidia显卡的笔记本或台式(非A...

放只虎归个山
44分钟前
3
0
C#中的多行字符串文字

有没有一种简单的方法可以在C#中创建多行字符串文字? 这是我现在所拥有的: string query = "SELECT foo, bar"+ " FROM table"+ " WHERE id = 42"; 我知道PHP有 <<<BLOCKBLOCK; C#是......

javail
51分钟前
4
0
微信支付之小微商户扫盲!支持信用卡,免营业执照!

微信支付商户申请面向线下小微商户开放,符合条件的微信支付服务商可为小微商户发起接入申请。无需营业执照。 小微商户日收款额度为5万元~30万元 。 信用卡支付日限额为1千;月限额1万。 结算...

吴伟祥
今天
4
0
大话SDWebImage(三)-- 图片下载层

四、图片下载层 SDWebImageDownloader是处理图片下载的类 4.1 图片下载步骤 首先介绍下dispatch_barrier,GCD中的dispatch_barrier目的是在并发队列实现串行的效果,创建下载任务SDWebImageD...

aron1992
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部