(1)
Short.valueOf("10")をByte[2]に変換したいのですが、ShortにはByteへ変換するメソッドがあるもののByte[2]へ変換するメソッドがありません。Byte[2]へ変換する方法を教えてください。

(2)
Shortは2バイトのはずなので1バイトに変換するメソッドが存在する意味がわかりません。なぜでしょうか。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

short型の10をByte[2]に変換するとして、どういう結果をお望みですか?


(A) 1バイト目が0、2バイト目が10 (ビッグエンディアン)
(B) 1バイト目が10、2バイト目が0 (リトルエンディアン)
(C) 1バイト目が49、2バイト目が48
(D) その他
また、10じゃなくて-10000だったら?

Byte[]かbyte[]かという部分を無視すればNo.1さんの回答にあるString.getBytes()は(C)の発想ですが、shortの値が100以上とか-10以下だったらByte[2]に入りませんね。
    • good
    • 0

1)プリミティブ型のByteじゃなければ簡単に変換できますが、わざわざプリミティブ型を使う理由があるのでしょうか?



byte[] by = "10".getBytes();

2)さーなんででしょーかね。プリミティブ型には大体byteValueのメソッドがありますね。
とりあえず(-128,127)までなら正しく変換されますけど、その値を超えると丸めたり切り捨てられるっぽいですね。
System.out.println(Short.valueOf("128").byteValue());
を実行すると-128になるので2の補数で計算してるようですね。(まぁ、あたりまえか)
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QHDMI変換ケーブルについて

PCのキャプボに HDMIをそのまま挿せる穴がなかったので

HDMI変換ケーブルというものを買おうと思っていますが

PS3にHDMIケーブルをさして

HDMIケーブルに 赤 白 黄色に変換するHDMI変換コードがあるんですが

この変換ケーブルを通して映像を通した場合

本来HDMI自体で刺した時と違って 画質が落ちたりということはありますか?

Aベストアンサー

>この変換ケーブルを通して映像を通した場合
>本来HDMI自体で刺した時と違って 画質が落ちたりということはありますか?

その変換ケーブルというのが、PS3購入時に付属していたものだとしたら、画質は落ちますね。
HDMI接続だと最大でフルHD(1920×1080)までの映像を出力できますが、付属の変換ケーブルを使った場合は720×480まで画質が低下します。

ちなみに、この問題は変換ケーブルを変えれば何とかなるというものではありません。
解決策としては、フルHD画質とHDMI入力に対応したキャプチャボードに買い替えることですね。
価格的には、安いものでも実売価格で7千円くらいしますし、パソコン側にもある程度高い性能が求められますので、パソコンのスペックによっては使えないかも。
あと、PS3の場合、HDMI出力には著作権保護がかかってますので、一部の製品じゃないと接続しても映像の取り込みが出来ないというのも注意点かな。

Q[クラス名].[メソッド名].[メソッド名]という書き方。

javaを勉強している者です。

少しピンと来ない書き方があるのですがそれはタイトルの通りの書き方で、具体的には

Main.getMailStore().isNewMail()

という書き方です。MailというのがクラスでgetMailStore()というのがそのクラスで宣言されているメソッドで下記のように実装されています。(MailStoreというのはインターフェースとして別のファイルで宣言されています。)

private static MailStore _mailStore;

public static MailStore getMailStore(){
return _mailStore;
}

(MailStoreというインターフェースの中にisNewMailというメソッドは宣言されています。)

public interface MailStore{
public boolean isNewMail(String uid);
}

これらだと、最初のMain.getMailStore().isNewMail()というのは、
「まず、MainクラスのgetMailStoreメソッドを呼び出して、そこでreturnされてくるMailStore型のクラスの中の、isNewMailメソッドを呼び出している」というのを一回で書いてしまっている書き方ということで合っているでしょうか?少しピンと来ないので・・(特にreturnされるメソッド(getMailStore)にそのまま.[メソッド]という書き方をのっけるあたりが)

よろしくお願いします。

javaを勉強している者です。

少しピンと来ない書き方があるのですがそれはタイトルの通りの書き方で、具体的には

Main.getMailStore().isNewMail()

という書き方です。MailというのがクラスでgetMailStore()というのがそのクラスで宣言されているメソッドで下記のように実装されています。(MailStoreというのはインターフェースとして別のファイルで宣言されています。)

private static MailStore _mailStore;

public static MailStore getMailStore(){
return _mailStore;
}

(MailSt...続きを読む

Aベストアンサー

あってます。

QHDMIスプリッター+DVI-D変換で映らなくなる

HDDレコーダーの映像を複数のPC用ディスプレイに映そうとしていますが
うまくいかないので考えられる原因を教えて下さい。

ACERはHDMIとDVI-Dを備えていて
PRINCETONはDVI-Dはありますが、HDMIはありません。

[映るパターン]
HDDレコーダー -> HDMIケーブル -> ACER
HDDレコーダー -> HDMIケーブル -> DVI-D変換コネクタ -> ACER
HDDレコーダー -> HDMIケーブル -> DVI-D変換コネクタ -> PRINCETON
HDDレコーダー -> HDMIケーブル -> 激安分配器 -> HDMIケーブル -> ACER

[映らないパターン]
HDDレコーダー -> HDMIケーブル -> 激安分配器 -> HDMIケーブル -> DVI-D変換コネクタ -> ACER
HDDレコーダー -> HDMIケーブル -> 激安分配器 -> HDMIケーブル -> DVI-D変換コネクタ -> PRINCETON

HDMIケーブルは5mのを使用しています。

分配器と変換コネクタの両方を噛ますと映らないようなのですが、原因が分かりません。

HDDレコーダーの映像を複数のPC用ディスプレイに映そうとしていますが
うまくいかないので考えられる原因を教えて下さい。

ACERはHDMIとDVI-Dを備えていて
PRINCETONはDVI-Dはありますが、HDMIはありません。

[映るパターン]
HDDレコーダー -> HDMIケーブル -> ACER
HDDレコーダー -> HDMIケーブル -> DVI-D変換コネクタ -> ACER
HDDレコーダー -> HDMIケーブル -> DVI-D変換コネクタ -> PRINCETON
HDDレコーダー -> HDMIケーブル -> 激安分配器 -> HDMIケーブル -> ACER

[映らないパターン]
HDDレコーダー -> ...続きを読む

Aベストアンサー

信号減衰が原因でしょう。
HDMIケーブルは長さが長くなればなるほど信号の減衰によるエラーが発生しやすくなります。
特に5mを越えると急激にエラー率が高くなります。
「映るパターン」の一番下、HDMIケーブルx2+激安分配器、の組み合わせで恐らく信号としては画面表示ができるぎりぎりのレベルのところなのでしょう。
それにDVI-D変換コネクタを入れると、そのコネクタ部でも信号減衰が発生しますから、結果として画面表示に足らないレベルまで信号が落ちてしまうことが原因でしょう。

実験レベルとしては、
「HDMIケーブルを片方だけ(若しくは両方とも)短いもの(たとえば1m程度)にしてみる」
と良いでしょう。
これで映れば間違いなく信号減衰が原因です。
短いケーブルに変更するか、「激安分配器」をブースト機能のあるものに変更するかの対応が必要です。
参考 ブースト機能付きHDMI分配器 Trinity TR-HDMI-102
製品情報 http://trinity.jp/products/simplism/hdmisplitter102/
価格情報 http://kakaku.com/item/K0000417833/

以上、ご参考まで。

信号減衰が原因でしょう。
HDMIケーブルは長さが長くなればなるほど信号の減衰によるエラーが発生しやすくなります。
特に5mを越えると急激にエラー率が高くなります。
「映るパターン」の一番下、HDMIケーブルx2+激安分配器、の組み合わせで恐らく信号としては画面表示ができるぎりぎりのレベルのところなのでしょう。
それにDVI-D変換コネクタを入れると、そのコネクタ部でも信号減衰が発生しますから、結果として画面表示に足らないレベルまで信号が落ちてしまうことが原因でしょう。

実験レベルとしては、...続きを読む

Qbyte[2] から int へ。

それぞれintの下位2バイトのビット列保持するbyte型配列の要素2つを int 形の整数に治したいのですがいい方法が思いつきません。例えば、

byte[0] = 0x01;
byte[1] = 0x01;
ならば、
00000000 00000000 00000001 00000001
で、256 + 1 = 257

byte[0] = 0x02;
byte[1] = 0x10;
ならば、
00000000 00000000 00000010 0000011
で、512+3 = 515
です。byteの値が0~127の場合は

int n = byte[0] << 8
n = n | byte[1]
という感じでいけそうなのですが、byte[0]が 0xFF のような負の値のときにint とのビット演算(もしくはシフト演算)で上位2バイト分も補数表記のためか全部1で埋まってしまい、上の方法はだめみたいです。

byte[0] = 0x01;
byte[1] = 0xFF;

のときは、

00000000 00000000 00000001 11111111
で、256+255 = 511
としたいのですが、場合わけをせずに求める
よい方法はないでしょうか。

それぞれintの下位2バイトのビット列保持するbyte型配列の要素2つを int 形の整数に治したいのですがいい方法が思いつきません。例えば、

byte[0] = 0x01;
byte[1] = 0x01;
ならば、
00000000 00000000 00000001 00000001
で、256 + 1 = 257

byte[0] = 0x02;
byte[1] = 0x10;
ならば、
00000000 00000000 00000010 0000011
で、512+3 = 515
です。byteの値が0~127の場合は

int n = byte[0] << 8
n = n | byte[1]
という感じでいけそうなのですが、byte[0]が 0xFF のような負の値のときにint ...続きを読む

Aベストアンサー

サンプルも作ってみました。
--------------------------
public class Sample {
public static void main(String[] args) {
byte [] bytes = { (byte)0x0FF, 0x01 };
int b4 = 0;
for(byte b : bytes){
int i = 0x0FF & b;
b4 = (b4<<8) + i;
}
System.out.printf("%1$d:%1$X%n",b4);
}
}

QDISPLAYPORTからHDMI変換アダプタを接続しても認識されません

デスクトップPCのDISPLAYPORTからHDMIケーブルへデータを送るための変換アダプタを買いました。

以下の商品です。

「DisplayPort → HDMI 変換コネクタ displayport hdmi ケーブル必要なし 持ち運び便利 DisplayPort-HDMI変換アダプタ DisplayPortディスプレイポート(オス) → HDMI(メス)変換アダプター グラフィックボード アクセサリ」
http://www.amazon.co.jp/gp/product/B009FIY4IM?psc=1&redirect=true&ref_=oh_aui_detailpage_o00_s00

接続していたところ、HDMIで接続されたテレビに出力できず、ディスプレイを検索しても「見つかりません」と表示されました。
何か特別な設定が必要なのでしょうか?

ご教示頂けますとうれしいです。

Aベストアンサー

ディスプレイとの相性問題の可能性があります。この手の製品にはよくあります。

もしくはトリプルディスプレイならアクティブタイプじゃないと無理です。

他のディスプレイで試してみて映るようなら相性でしょう。

他のディスプレイでも映らないなら不良品かもしれません。

QString(byte[] bytes, int offset, int length)の文字コードは?

String(byte[] bytes, int offset, int length)は、バイト配列(8bitずつのまとまり)を、文字列型に直す、というものだと思うのですが文字コードは何にしたがって直すのでしょうか?

http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/lang/String.html

Aベストアンサー

http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/lang/String.html#String%28byte[],%20int,%20int%29

>プラットフォームのデフォルト文字セットを使用して、

日本語WindowsならShift_JISでしょう。他の環境では解りません。

#なので僕は

http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/lang/String.html#String%28byte[],%20int,%20int,%20java.lang.String%29

で指定するほうが好きです。(コードを読む人に,誤解を与えにくく,異なる環境でも挙動を一致させやすいから移植性も高まると考えるため)

どうしてもデフォルトがほしけりゃ
http://java.sun.com/javase/6/docs/api/java/nio/charset/Charset.html#defaultCharset%28%29
があるわけですし

http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/lang/String.html#String%28byte[],%20int,%20int%29

>プラットフォームのデフォルト文字セットを使用して、

日本語WindowsならShift_JISでしょう。他の環境では解りません。

#なので僕は

http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/lang/String.html#String%28byte[],%20int,%20int,%20java.lang.String%29

で指定するほうが好きです。(コードを読む人に,誤解を与えにくく,異なる環境でも挙動を一致させやすいか...続きを読む

QVGAからHDMIの変換はできますか?

Radeon HD3450 256MB ビデオカードを使ってデュアルモニタを構成しようとしていますが、ビデオカード側の接続はDVIとHDMIで、ディスプレイ側は2台ともVGAです。VGAからDVIの変換アダプタはあるのですが、VGAからHDMIの変換アダプタが見当たりません。

下記のサイトを参照すると
http://faq.epsondirect.co.jp/faq/edc/app/servlet/relatedqa?QID=027555

DVIからHDMIの変換アダプタはあるみたいなので、
VGAからDVI、そしてDVIからHDMIと2個変換アダプタを使用した場合、認識されるでようか?

Aベストアンサー

下記のような変換器を使用しないと、アナログRGBには変換できません。

http://www.cabling-ol.net/cabledirect/CP-262D.php

コスト等を考えれば、DVI-D対応のモニターを買うか、DVI-I*2等のビデオカードに買い換えた方がいいでしょう。

QBufferedImageをbyte[]に変換ってできますか?

画像データを保持しているBufferedImageオブジェクト
から、その内容をbyte[]で取得する方法はあるので
しょうか?

また、Image⇒byte[]も可能でしょうか?

Aベストアンサー

PixelGrabberを使ってint[]にピクセルの色データを取り出した後に3色に分解して
byteに変換でしょうか?
でも、javaのbyte型は-127~127で、unsignedという概念は無いようなので、
byte型にする意味はあるのでしょうか?

コンストラクタ
PixelGrabber(Image img, int x, int y, int w, int h, int[] pix, int off, int scansize)
例文
PixelGrabber pg=new PixelGrabber(image,0,0,width,height,pix,0,width);
try {
pg.grabPixels();
int red = 0xff & (pix[0]>>16);
int green = 0xff & (pix[0]>>8);
int blue = 0xff & (pix[0] );
} catch(InterruptedException e) {System.out.println("エラー");}

PixelGrabberを使ってint[]にピクセルの色データを取り出した後に3色に分解して
byteに変換でしょうか?
でも、javaのbyte型は-127~127で、unsignedという概念は無いようなので、
byte型にする意味はあるのでしょうか?

コンストラクタ
PixelGrabber(Image img, int x, int y, int w, int h, int[] pix, int off, int scansize)
例文
PixelGrabber pg=new PixelGrabber(image,0,0,width,height,pix,0,width);
try {
pg.grabPixels();
int red = 0xff & (pix[0]>>16);
int green = 0xff & (pix[0]>...続きを読む

QVGA to HDMI変換ケーブル って,使ったことありますか?

VGA to HDMI変換ケーブル って,使ったことありますか?

Yahooオークションなどで格安の VGA to HDMI変換ケーブルがよく出品されています(例:http://page21.auctions.yahoo.co.jp/jp/auction/j106567461)が,

このようなケーブルは,パソコン画像(VGA出力端子:アナログRGB)を液晶ハイビジョンテレビ(HDMI入力端子)などに表示させて時に使用できるのでしょうか? ご利用になった,経験をお聞かせください.

ラトックシステム(株) VGA to HDMI変換アダプタ (REX-VGA2HDMI)などと価格が随分違うので本当に機能するか疑問です.

Aベストアンサー

使ったことのある者ではありませんが。

VGA と HDMI は信号形式がまるで違うので
ラトック製の変換機のように、
電子回路入りの箱で信号を変換するのが正攻法です。

オークションの品は価格、形状から見てそのような電子回路がなく
単にコネクタ同士を導線で接続した「コネクタ変換ケーブル」だろうと思われます。
出品ページに「信号を変換」とも書かれてないし。

(違ったらすみません→出品者の方。出品ページの説明不足なのでいろいろ想像してます)

実例は知りませんが、善意に解釈すれば
「HDMIコネクタを使いアナログVGA信号を通す」という特殊機器用なのかも。

ヤフオクIDをお持ちなら出品者に質問できますので、してみるといいです。

Qbyte[]→String変換後の文字列が違うのはなぜ?

byte[]→String変換の処理を行っていたのですが、
使うメソッド(コンストラクタ)によって結果が違ってきます。なぜだかよくわからないのですが、どなたかご説明していただけないでしょうか。

byte[]bt;
Stringstr1 = "12345", str2;

bt = str1.getBytes();

(1)str2 = new String(bt);
(2)str2 = bt.toString();

(1)の方法と(2)の方法では答えが違ってきます。(1)では"12345"でしたが、(2)ではなんだか記号などまざったぐちゃぐちゃな文字列でした。

よろしくお願いいたします。

Aベストアンサー

(1)が配列の内容を基に文字列を生成しているのに対し、
(2)は配列のインスタンス(内容ではない)を示す文字列を引き出しています。
全く別のものです。


人気Q&Aランキング