トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     ByteArrayのX byte目のY bit目を変更したい
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
dekkey1
Åê¹ÆNo.49737
投稿日時: 2013-4-5 11:02
新米
居住地:
投稿: 2
使用環境:
ByteArrayのX byte目のY bit目を変更したい
はじめまして。


var stream:ByteArray = new ByteArray();
stream.position = 0;
stream.writeByte(170);	//  8bit整数値をセット( 1 バイト分書き込む)


これで、2進数で10101010が入っていると思いますが、
これを、10111010にしたい場合、4ビット目の0を1に変えれば良いと思います。

このやり方が分かりません。
どなたか教えてください。

ちなみに、Arrayしたり、Stringにすればできたのですが、
スマートではなさそうなので、直接、ByteArrayのX byte目のY bit 目にアクセスして
変更できたら良いなと思い、ご質問させていただきました。

環境は、Windows7、Flash CS6、ActionScript3.0です。

よろしくお願いします。
野中文雄
Åê¹ÆNo.49738
投稿日時: 2013-4-5 11:27
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: ByteArrayのX byte目のY bit目を変更したい
ByteArrayクラスの中には、おそらくビット単位の読み書きをする方法は用意されていないと思います。ActionScript 3.0の一般的なビット演算によるしかないのではないでしょうか。
var n:int = parseInt("10101010", 2);
trace(n);
n |= (1 << 4);
trace(n.toString(2));  // [出力]: "10111010"

引用:
dekkey1さんは書きました:

var stream:ByteArray = new ByteArray();
stream.position = 0;
stream.writeByte(170);	//  8bit整数値をセット( 1 バイト分書き込む)


これで、2進数で10101010が入っていると思いますが、
これを、10111010にしたい場合、4ビット目の0を1に変えれば良いと思います。
...[中略]...
環境は、Windows7、Flash CS6、ActionScript3.0です。


----------------
 

dekkey1
Åê¹ÆNo.49739
投稿日時: 2013-4-5 14:46
新米
居住地:
投稿: 2
使用環境:
Re: ByteArrayのX byte目のY bit目を変更したい
なるほど!早速ご回答いただき、ありがとうございます!
教えていただいたビット演算を試してみたところ、コードがずいぶんスマートになりました。
大変助かりました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops