Java实现uint8_t/uint16_t/uint32_t
- 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.