Comment puis-je diviser l'entrée 64 bits en 16 bits?Comment diviser une chaîne de 64 bits en quatre 16 bits en Java?
Répondre
étant donné que la valeur contient votre numéro de 64bit
char a1 = (char) (value & 0xffff);
char a2 = (char) ((value>>16) & 0xffff);
char a3 = (char) ((value>>32) & 0xffff);
char a4 = (char) ((value>>48) & 0xffff);
modifier: moulages ajouté comme suggéré par commentateur
où est la chaîne? –
lorsqu'une valeur 64 bits est copiée sur une primitive 16 bits et que seuls les 16 bits inférieurs seront copiés quel est le point dans et avec 0xffff? –
Il n'est pas clair si elles signifient littéralement 'String' ou seulement 64 bits. – jjnguy
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);
Ceci est en supposant que vous avez en fait une chaîne qui ressemble à ceci:
1010101010101010101010101010101010101010101010101010101010101010
Utilisation d'un 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);
est ici une façon inappropriée générique de le faire :):
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]);
}
}
}
produit sortie:
Field 0: 5678
Field 1: 1234
Field 2: ef99
Field 3: abcd
et pour une bitsPerField de 7, il produit:
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
N'est-ce pas amusant?
- 1. Assemblage 16 bits sur Windows 64 bits?
- 2. Décodage d'un caractère de 16 bits divisé en Java
- 3. Solr - utilise Java 64 bits, pas Java 32 bits sous Windows 7 64 bits
- 4. Comment trouver en utilisant c-programme si mon ordinateur est 16 bits ou 32 bits ou 64 bits
- 5. debunits nunit en 64 bits, l'application est en 32 bits
- 6. Profondeur de bit 16 bits
- 7. Convertir un entier 16 bits non signé en un entier 16 bits signé en C#
- 8. Java 64 bits JDK question
- 9. Ecrit en 16 bits BufferedImage TYPE_USHORT_GRAY
- 10. Réception d'entiers 16 bits en Python
- 11. Comment faire une adresse de 20 bits en utilisant deux registres de 16 bits?
- 12. Compiler le projet 32 bits VS 2003 en 64 bits
- 13. SetEnvironmentVariable en 32 bits Processus sur OS Windows 64 bits
- 14. Application java 64 bits à utiliser 32 bits dll
- 15. Accès CSV via ADO.NET en 64 bits?
- 16. Comment convertir une image 24 bits en bitmap rgb565 16 bits?
- 17. Pack/décompresser un int 64 bits sur une architecture 64 bits en PHP
- 18. Comment "concaténer" deux int de 32 bits pour obtenir une longueur de 64 bits en Python?
- 19. Conversion d'une forme d'onde de 32 bits en une forme d'onde de 16 bits
- 20. Comment créer une chaîne représentant un Java long comme s'il était non signé Valeur 64 bits
- 21. Mélange de code 32 bits et 16 bits avec nasm
- 22. Xcode & 64 bits & 32 bits Question
- 23. diviser un hachage de 256 bits en un préfixe de 32 bits en python
- 24. Spécifique 64 bits intrinsèque
- 25. Java RS232 Comm sur Vista-64 bits
- 26. Passage en 64 bits sous OS X?
- 27. Erreur d'exécution binaire 64 bits sur les Centos 64 bits
- 28. PyQt4 sur Snow Leopard en 64 bits
- 29. Ciblage 64 bits
- 30. en cours d'exécution PIL sur 64 bits
à quoi ressemble une chaîne de 64 bits? – OscarRyz