アプリ版:「スタンプのみでお礼する」機能のリリースについて

よろしくお願いします。

ASPで、4バイトの整数値をビッグエンディアンでレスポンスするにはどうしたら良いでしょうか?

A 回答 (1件)

ASPってVBscriptって事でいいのかな?


ASPは使ったことないから、なんだけど、
4バイトの整数値を変換するなら、以下の方法でどうでしょう?

Dim a1,a2
Dim b1,b2,b3,b4

b1 = &hFF
a1 = CLng(&H12345678)

msgbox "元のデータ(リトリエンディアン):&h" & hex(a1)

b1 = (a1 AND &hff)
a1 = (a1 - b1) / &h100
b2 = (a1 AND &hff)
a1 = (a1 - b2) / &h100
b3 = (a1 AND &hff)
a1 = (a1 - b3) / &h100
b4 = (a1 AND &hff)


msgbox "ビット分割:&h" & hex(b1) & ",&h" & hex(b2) & ",&h" & hex(b3) & ",&h" & hex(b4)

a2 = (b1 * &h1000000) +(b2 * &h10000) +(b3 * &h100) +(b4)

msgbox "配置変換済みのデータ(ビッグエンディアン):&h" & hex(a2)

この回答への補足

Kaoneさん、ご回答ありがとうございます。
教えていただいたソースで、確かにビッグエンディアンに変換できているはずなのですが、aspでレスポンスしようとすると失敗してしまいます。
バイナリをレスポンスするには、ResponseオブジェクトのBinaryWriteメソッドを使い、引数にはバイト配列を指定するとのことですので、

x = array(Cbyte(b1), Cbyte(b2), Cbyte(b3), Cbyte(b4))
Response.BinaryWrite x

としてみましたが、"型が不一致です"と怒られてしまいます。
もう少し調べて頑張ってみます。
取り急ぎお礼とご報告まで。

補足日時:2007/12/08 23:19
    • good
    • 0
この回答へのお礼

その後、色々調べてみたところ、asp(VBS)では、
x = array(Cbyte(b1), Cbyte(b2), Cbyte(b3), Cbyte(b4))
としてもバイト配列ではなく、バリアント配列になってしまうようです。

そこで、
http://winscript.s41.xrea.com/wiki/index.php?%5B …
にあるバイト配列操作の関数を使って、

HexText = hex(b1) & hex(b2) & hex(b3) & hex(b4)
Response.BinaryWrite HexTextToByteArray(HexText)

としたら、できました。
ありがとうございました!

お礼日時:2007/12/09 11:32

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