如何将64位输入分为16位?如何在Java中将64位字符串分成四个16位?
1
A
回答
0
因为价值包含您的64位号码
char a1 = (char) (value & 0xffff);
char a2 = (char) ((value>>16) & 0xffff);
char a3 = (char) ((value>>32) & 0xffff);
char a4 = (char) ((value>>48) & 0xffff);
编辑:添加石膏由评议的建议
4
String s = someStringOfBits;
String s0 = someStringOfbits.substring(0, 16);
String s1 = someStringOfbits.substring(16, 32);
String s2 = someStringOfbits.substring(32, 48);
String s3 = someStringOfbits.substring(48, 64);
这是假设你确实有一个字符串,它类似于此:
1010101010101010101010101010101010101010101010101010101010101010
3
使用ByteBuffer
:
ByteBuffer buf = ByteBuffer.allocate(Long.SIZE/Byte.SIZE);
buf.asLongBuffer().put(0, value);
short a0 = buf.asShortBuffer().get(0);
short a1 = buf.asShortBuffer().get(1);
short a2 = buf.asShortBuffer().get(2);
short a3 = buf.asShortBuffer().get(3);
1
这里是做:)不适当的通用方式:
public class MyClass
{
static public long[] splitIntoNBits(long value, int numBitsPerChunk){
long[] retVal = null;
if(numBitsPerChunk == 64){
retVal = new long[1];
retVal[0] = value;
return retVal;
}
if(numBitsPerChunk <= 0 || numBitsPerChunk > 64){
return null;
}
long mask = (1 << numBitsPerChunk) - 1;
int numFullChunks = (byte) (64/numBitsPerChunk);
int numBitsInLastChunk = (byte) (64 - numFullChunks * numBitsPerChunk);
int numTotalChunks = numFullChunks;
if(numBitsInLastChunk > 0){
numTotalChunks++;
}
retVal = new long[numTotalChunks];
for(int i = 0; i < numTotalChunks; i++){
retVal[i] = value & mask;
value >>= numBitsPerChunk;
}
// clean up the last chunk
if(numBitsInLastChunk > 0){
mask = (1 << numBitsInLastChunk) - 1;
retVal[retVal.length - 1] &= mask;
}
return retVal;
}
public static void main(String[] args)
{
long myvalue = ((long) 0x12345678) | (((long) 0xABCDEF99) << 32);
long[] bitFields = splitIntoNBits(myvalue, 16);
for(int i=0; i < bitFields.length; i++){
System.out.printf("Field %d: %x\r\n", i, bitFields[i]);
}
}
}
产生输出:
Field 0: 5678
Field 1: 1234
Field 2: ef99
Field 3: abcd
,并为7 bitsPerField它产生:
Field 0: 78
Field 1: 2c
Field 2: 51
Field 3: 11
Field 4: 11
Field 5: 73
Field 6: 7b
Field 7: 66
Field 8: 2b
Field 9: 1
这不是很有趣!
相关问题
- 1. 如何在VB.NET中将16位值分成两个8位值?
- 2. 将一个字符串分成四组
- 3. 无符号16位和64位整数
- 4. Java 16位字符如何支持Unicode?
- 5. 在python中将16位int分成两个8位整数
- 6. 如何将两位数分成两个不同的字符串?
- 7. 将LARGE_INTEGER转换为64位字符串
- 8. 如何在VBScript中将64位数分成高32位和低32位?
- 9. 在java中将字符串分割成多个子字符串
- 10. 在Java中解码拆分的16位字符
- 11. 将数据分成四分位数
- 12. 如何将八个字符的字符串分成四个变量?
- 13. 将字符串转换为64位的字符串
- 14. 将字符串分割为各个位
- 15. 如何将二进制文件中的64位Java解析为PHP字符串?
- 16. 填充字符串以四位数字
- 17. 如何在16位机器上执行64位乘法?
- 18. 如何64位整数分成两个32位的整数
- 19. 64位Windows上的16位程序集?
- 20. 用16位将寄存器分成8位两部分
- 21. 如何在整数列中存储64位字符串?
- 22. 如何从文件中读取字符并将其拆分为两个16位?
- 23. 如何将字符串转换为64位整数?
- 24. 如何在WinRT中将字符串绘制成位图图像
- 25. 如何将两个64位整数连接成128位整数?
- 26. 如何将字符串分成两个变量PHP中的末尾2位数
- 27. 如何在Perl中将字符串分成两个字符块?
- 28. 如何将XMM 128位寄存器分成两个64位整数寄存器?
- 29. Java在选定的位置将字符串拆分为多个字符
- 30. 如何将字符串数字转换为Java中的两位小数三位?
64位字符串是什么样的? – OscarRyz