hjs557523 / hjs557523/notes

Java实现uint8_t/uint16_t/uint32_t

Open
#5 0 comments 0 reactions 0 assignees View on GitHub
Java 算法
Dominant language
No language data
Stars
1
Forks
0
PR merge metrics
No merged PRs in 30d

Description

对`Java`相关知识进行总结,涉及`框架`,`源码`,**`项目开发`**,`设计模式`,`并发设计`等。
## 项目开发
#### Java实现uint8_t/uint16_t/uint32_t
        Java不支持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 | bits | bytes | 对应Java实现 |
| ---------- | ---------- | ----------- | ------------- |
| uint8_t | 8 | 1 | short |
| uint16_t | 16 | 2 | int |
| uint32_t | 32 | 4 | long |

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

```java
//uint8_t
public short getUint8(short s){
return s & 0x00ff;
}

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

//uint32_t
public int getUint16(int i){
return i & 0xffffffff;
}
```

```c++
//c++
uint16_t n1,n2,n3;
n3 = n1 ^ n2;

//java
int n1,n2,n3;
n3 = getUint16(n1 ^ n2);
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.