検索
ホームページJava&#&チュートリアルJavaのバイト配列型(byte[])とint型の相互変換メソッドのコード例を詳しく紹介

以下のエディターは、Java バイト配列型 (byte[]) と int 型を変換する方法に関する記事を提供します。編集者はこれがとても良いと思ったので、参考として共有します。エディターに従って見てみましょう。コードは次のとおりです。

public class CommonUtils {
 //高位在前,低位在后
 public static byte[] int2bytes(int num){
 byte[] result = new byte[4];
 result[0] = (byte)((num >>> 24) & 0xff);//说明一
 result[1] = (byte)((num >>> 16)& 0xff );
 result[2] = (byte)((num >>> 8) & 0xff );
 result[3] = (byte)((num >>> 0) & 0xff );
 return result;
 }
 
 //高位在前,低位在后
 public static int bytes2int(byte[] bytes){
 int result = 0;
 if(bytes.length == 4){
  int a = (bytes[0] & 0xff) << 24;//说明二
  int b = (bytes[1] & 0xff) << 16;
  int c = (bytes[2] & 0xff) << 8;
  int d = (bytes[3] & 0xff);
  result = a | b | c | d;
 }
 return result;
 }
 
 public static void main(String[] args){
 int a = -64;
 System.out.println("-64="+Integer.toBinaryString(-64));
 byte[] bytes = CommonUtils.int2bytes(a);
 for(int i = 0 ; i<4 ; i++){
  System.out.println(bytes[i]);
 }
 a = CommonUtils.bytes2int(bytes);
 System.out.println(a);
 
 }
}


実行結果は次のとおりです。

-64=11111111111111111111111111000000
-1
-1
-1
-64
-64


1:

-64は[10000000][00000000][00000000][01000000]としてバイナリの元のコードに変換されます元のコードを[11111111][11111111][11111111][11000000]として補数コードに変換しますそれはコンソールの出力結果と同じです。 java では、バイナリが 2 の補数形式で表現されていることがわかります

-64 >>> 24 (符号なし右シフト、上位ビットは 0 で埋められます) 以降は、 [ になります。 00000000][00000000][00000000][ 11111111]

前のステップの結果に 0xff を追加しても、0xff の値は [00000000] なので、[00000000][00000000][00000000][11111111] となります。 ][00000000] [00000000][11111111], so & 0xff の目的は、下位 8 ビットを変更せずに保持し、残りの位置を 0

にし、結果を強制的にバイト型に変換し、下位ビットを保持することです。上位ビットを切り捨てて、[11111111] になることがわかります。前のステップの 0xff は、実際には必要ありません。ビットがどんなに上位であっても、最終的には切り捨てられます

ので、result[0] is [11111111]=-1 など:

result[1]为[11111111]=-1
result[2]为[11111111]=-1
result[3]为[11000000]=-64

説明 2:

byte[0] は [11111111] で、最初に byte[0] が int 型に変換されます (

Before)ディスプレイスメント演算では、byte 型が int 型に変換されます。正の数の場合は上位ビットに 0 が埋められ、負の数の場合は上位ビットに 1 が埋められます

)、加算します。上位ビットに 1 を設定すると、[11111111][11111111][11111111][11111111]になります前のステップの結果と 0xff の後は、[00000000][00000000][00000000][11111111]になります

それでは前のステップの結果は 同様に、b、 c, d a | b | c | d は、バイトを int に変換するときに、パディングが a | b | c | d に影響を与えないことがわかります。 0に設定)、

& 0xffが必要です

shortとbyte[]の間の変換、longとbyte[]の間の変換も同様です

追記:

1、int型は4を占めますバイト型は 1 バイトのみを占有します

2、元のコード: 最上位ビットは符号ビットで、残りのビットは数値サイズを表すために使用されます。

2 の元のコードは次のとおりです: 00000010

- 2. 元のコード: 100000103、補数コード: 正の数 補数コードは元のコードと同じです。

負の数の補数コードの符号ビットは変更されず、残りのビットはそのままです。ビットごとに反転された

2 の補数コード: 00000010

-2 の補数コード: 111111014 、補数: 正の数の補数は元のコードと同じです。負の数は負の数の補数 + 1

2の補数: 00000010

-2の補数: 11111110

以上がJavaの詳しい入門書です バイト配列型(byte[ ]) と int 型の詳細については、PHP 中国語 Web サイト (www.php.cn) に注目してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境