2013年11月18日月曜日

開発環境

C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、谷口 功 (翻訳)、オライリー・ジャパン)のⅡ部(単純なプログラミング)の11章(ビット演算)、11.8(ビットマップグラフィックス)、11.10(プログラミング実習)、実習11-5をDartで解いてみる。

その他参考書籍

実習11-5.

コード

sample.dart

import 'dart:html';
import 'package:fixnum/fixnum.dart' as fixnum;

void main(){
  Element pre = querySelector('#pre0');
  InputElement input = querySelector('#t0');
  RegExp pattern = new RegExp(r'^[-]?\d+$');
  String result = window.navigator.userAgent + '\n';
  result += '8つの4ビット値に分割\n';
  result += 'その他の数値\n';
  [0, 1, 0xf, 0, -1, -2, -16, -17].forEach((int n){
    fixnum.Int32 a = new fixnum.Int32(n);
    result += '$a: ${split4bit(a)}\n';
  });
  result += '入力値\n';
  pre.text = result;
  input.onKeyUp.listen((KeyboardEvent event){
    String temp = '';
    String v = input.value;
    if (!pattern.hasMatch(v)){
      temp += '整数(32ビット符号付き)を入力して下さい。\n';
    } else {
      fixnum.Int32 n = new fixnum.Int32(int.parse(v));
      temp += '$n: ${split4bit(n)}\n';
    }
    pre.text = '$result$temp';
  });
}

List<String> split4bit(fixnum.Int32 n){
  fixnum.Int32 m = new fixnum.Int32(0xf);
  List<String> bits = new List<String>(8);
  int i;
  for (i = 7; i >= 0; i -= 1){
    bits[i] = (n & m).toRadixString(16);
    n >>= 4;
  }
  return bits;
}














						

0 コメント:

コメントを投稿