- - PR -
文字列を符号付きに変換して取得するには・・
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2009-03-31 09:49
お世話になります。
XP,VS2005のC#で開発をしております。 文字列"FF" などを、符号付き整数に-128などに変換するような メソッド、もしくは関数はありますでしょうか? 符号ビットが立っている場合は、マイナスに変換するような ことは、可能でしょうか? Convert.ToInt32 や Int32.Parse などでは、255が戻ってしまいます。 なにか良い方法はありませんでしょうか? お願いいたします。 | ||||
|
投稿日時: 2009-03-31 09:59
FF は 255 で合っていると思いますが
「-128など」とは何でしょうか? | ||||
|
投稿日時: 2009-03-31 09:59
そこまで分かってるなら、Convert クラス内の他のメソッドにも目を向けましょう。 何ビットの数値として扱えばいいのか? を考えて。 Int32 は文字通り 32bit 数値ですから、一番上の 32 ビット目が補数用のビットですよ。0xff ごとき話になりません。 [追加] あれ? 0xff で -128 ? それってどんな変換? [/追加] [ メッセージ編集済み 編集者: Hongliang 編集日時 2009-03-31 10:07 ] | ||||
|
投稿日時: 2009-03-31 10:07
変換対象が 1バイト と決まっていれば、sbyteで取得するとか。
sbyte sb = Convert.ToSByte("FF", 16); ところで FF って -128 ではないのでは?(0x80が-128) →2の補数ってことではないのか? | ||||
|
投稿日時: 2009-03-31 10:12
"FF"→-1 "80"→-128 なら以下でいけます。 SByte.Parse("FF", System.Globalization.NumberStyles.HexNumber) "FF"→-128 となると用意されたメソッドで適合するのがあるかちょっとわかりません。 場合によっては自作ですかね。 | ||||
|
投稿日時: 2009-03-31 10:17
Kingさん
Hongliangさん Blueさん レスありがとうございます。 もうしわけありません。 -128ではなく 0xFF = -1です ボケておりました。 2補数に変換を行いたいと思っています。 入ってくるデータが32bitではなく 24bitなので、なにかよい方法は ありませんでしょうか? プログラムでビットをみながら 作るしかありませんでしょうか? お願いします。 | ||||
|
投稿日時: 2009-03-31 10:20
> 24bitなので、なにかよい方法は
ということはどのようになってほしいのでしょうか? FF FF FF だったら何にどう値が格納されるのでしょうか? sbyte配列に {-1, -1, -1} ? それとも、24ビット目を符号ビットとするの? | ||||
|
投稿日時: 2009-03-31 10:29
Blueさん
レスありがとうございます。 入ってくる値は、文字列で取得します。 0x800000 - 7FFFFF(hex) ← この文字列が送られてきます。 (-838608 - 838607) 仮に -128 だと FFFF80の文字列が入ってきます。 ですので、24bit目が符号になります。 お願いします。 |