- PR -

文字列を符号付きに変換して取得するには・・

投稿者投稿内容
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2009-03-31 10:33
パッと思いついたのは無理やり32ビット文字列にして、8ビットシフトさせるって方法。

string s = "FFFFFF";
int n = Convert.ToInt32(s + "00", 16) >> 8;

s = "FFFF80";
n = Convert.ToInt32(s + "00", 16) >> 8;
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2009-03-31 12:26
引用:

kenさんの書き込み (2009-03-31 10:29) より:

入ってくる値は、文字列で取得します。

0x800000 - 7FFFFF(hex) ← この文字列が送られてきます。
(-838608 - 838607)

仮に -128 だと
FFFF80の文字列が入ってきます。

ですので、24bit目が符号になります。


やることはわかっているのだからして、あとはそれを素朴に実装すればいいんじゃないかな、と。

コード:
string s = "FFFF80";
int n = Convert.ToInt32(s, 16);

if (n >= 0x800000)
{
    n -= 0x1000000;
}

Console.WriteLine(n);

ken
大ベテラン
会議室デビュー日: 2006/03/29
投稿数: 121
お住まい・勤務地: 東京
投稿日時: 2009-03-31 14:40
blueさん
rainさん
レスありがとうございます。

なるほど。。
思いつきませんでした

ありがとうございました。
無事にできました。

スキルアップ/キャリアアップ(JOB@IT)