Visualizzazione dei risultati da 1 a 4 su 4

Discussione: array di byte

  1. #1

    array di byte

    ho un array di byte così fatto:
    A= | 50 | 0 | -64 | 0 | -16 | 0 | 24 <--sono valori di esempio

    dove mi interessa tradurre in interi i valore da A[1] in poi.
    Sapendo che i valori numerici multi-byte sono espressi come interi con segno su 16 bit in formato big-endian e sapendo che A[1] (è il valore 0) e A[2] (è il valore -64) sono un singolo valore ma espressi in big-edian (quindi in multibyte per la precisione espressi in due byte)
    qualcuno mi sa dire come posso tradurlo in int?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: array di byte

    Originariamente inviato da ersecchio
    Sapendo che i valori numerici multi-byte sono espressi come interi con segno su 16 bit in formato big-endian e sapendo che A[1] (è il valore 0) e A[2] (è il valore -64) sono un singolo valore ma espressi in big-edian (quindi in multibyte per la precisione espressi in due byte)
    qualcuno mi sa dire come posso tradurlo in int?
    Se devono essere trattati come 16 bit con segno ... puoi comporre un short o un int (chiaramente come int avresti la estensione del segno sui 16 bit "alti").

    short val = (short) (bhigh << 8 | blow & 0xFF);

    bhigh e blow sono chiaramente i byte alto e basso.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Re: Re: array di byte

    Originariamente inviato da andbin
    Se devono essere trattati come 16 bit con segno ... puoi comporre un short o un int (chiaramente come int avresti la estensione del segno sui 16 bit "alti").

    short val = (short) (bhigh << 8 | blow & 0xFF);

    bhigh e blow sono chiaramente i byte alto e basso.

    quindi per trasforamare uno short in byte basta fare il procedimento inverso:
    esempio:

    short numerodaconvertire=553;

    byte partealta=(byte) (numerodaconvertire >> 8);
    byte partebassa=(byte)(numerodaconvertire & 0xff));

    per la partebassa bisogna fare l' AND bit a bit con 0xff (255) poichè stiamo parlando di 1 byte (quindi 8 bit) e quindi 2^8=256 ?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: array di byte

    Originariamente inviato da ersecchio
    quindi per trasforamare uno short in byte basta fare il procedimento inverso:
    esempio:

    short numerodaconvertire=553;

    byte partealta=(byte) (numerodaconvertire >> 8);
    byte partebassa=(byte)(numerodaconvertire & 0xff));
    Sì.
    Però per la parte bassa non serve la AND con 0xff!! Già solo un cast a byte "tronca" la parte alta.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.