如何在C语言中执行按位运算并将结果打印在屏幕上?

时间:2019-04-13 21:27:30

标签: c base64 bitwise-operators

我正在尝试制作一个程序,以便按照https://daemoniolabs.wordpress.com/2011/09/09/codificacao-base64-em-c/上给出的说明在屏幕上逐步显示程序,以便将字符串编码为base64。我一直坚持按位AND操作。

正如我所说,我正在上面的链接中关注本教程,但是找不到该特定步骤的任何答案。

import 'package:flutter/material.dart';

import 'dart:io';

void main() => runApp(MainPage());

class MainPage extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return MaterialApp (
        debugShowCheckedModeBanner: false,
        home:Scaffold (
            backgroundColor: Colors.white,
            body: Column (
                children: <Widget> [
                  Container (
                      height: 100.0
                  ),
                  Body(),
                ]
            )
        )
    );
  }

}

class Body extends StatefulWidget {

  @override
  _BodyState createState() => _BodyState();

}

class _BodyState extends State<Body> {

  final String open1 = 'open';

  int count = 1;

  @override
  Widget build(BuildContext context) {
    return Expanded (
        child: Container (
            child: NotificationListener<OverscrollIndicatorNotification> (
                onNotification: (OverscrollIndicatorNotification overscroll) {
                  overscroll.disallowGlow();
                },
                child: PageView.builder(
                    reverse: true,
                    pageSnapping: false,
                    controller: PageController(viewportFraction: 0.85),
                    itemCount: count,
                    itemBuilder: (context, i) {
                      if (i == 0) {
                        return GestureDetector (
                            onTap: () {
                              Navigator.push(
                                context,
                                MaterialPageRoute (
                                    builder: (context) => RPage (
                                      open: open1,
                                    )
                                ),
                              );
                              count++;
                            },
                            child: Hero (
                                tag: open1,
                                child: Padding (
                                    padding: EdgeInsets.only(
                                        left: MediaQuery.of(context).size.height * 0.015,
                                        right: MediaQuery.of(context).size.height * 0.015,
                                        top: MediaQuery.of(context).size.width * 0.08,
                                        bottom: MediaQuery.of(context).size.width * 0.15
                                    ),
                                    child: Material (
                                        borderRadius: BorderRadius.circular(40.0),
                                        color: Colors.white,
                                        elevation: 8.0,
                                        child: InkWell (
                                          child: Column (
                                              mainAxisAlignment: MainAxisAlignment.center,
                                              children: <Widget> [
                                                Icon (
                                                  Icons.add,
                                                  size: 30.0,
                                                  color: Colors.black,
                                                )
                                              ]
                                          ),
                                        )
                                    )
                                )
                            )
                        );
                      }
                      else {
                        return RCard(i);
                      }
                    }
                )
            )
        )
    );
  }

}

class RCard extends StatefulWidget {

  final int count;

  RCard(this.count);

  @override
  RCardState createState() => RCardState();

}

class RCardState extends State<RCard> {

  int count;

  String open2;

  @override
  void initState() {

    super.initState();

    count = widget.count;

    open2 = 'open$count';

  }

  @override
  Widget build(BuildContext context) {
    return Hero (
      tag: open2,
      child: GestureDetector (
          onTap: () {
            Navigator.push(
              context,
              MaterialPageRoute (
                  builder: (context) => RPage (
                    open: open2,
                  )
              ),
            );
          },
          child: Padding (
              padding: EdgeInsets.only(
                  left: MediaQuery.of(context).size.height * 0.015,
                  right: MediaQuery.of(context).size.height * 0.015,
                  top: MediaQuery.of(context).size.width * 0.08,
                  bottom: MediaQuery.of(context).size.width * 0.15
              ),
              child: Material (
                borderRadius: BorderRadius.circular(40.0),
                color: Colors.white,
                elevation: 8.0,
              )
          )
      ),
    );
  }

}

class RPage extends StatelessWidget {

  final String open;

  RPage({this.open});

  @override
  Widget build(BuildContext context) {
    return GestureDetector (
      child: Hero (
          tag: open,
          child: Material (
              child: Container (
                  color: Colors.white,
                  child: Center (
                      child: RBody()
                  )
              )
          )
      ),
      onTap: () {
        Navigator.pop(context);
      },
    );
  }
}

class Constants {

  static const String add = 'Add';

  static const List<String> choices = <String>[

    add

  ];

}

class RBody extends StatefulWidget {

  @override
  RBodyState createState() => RBodyState();

}

class RBodyState extends State<RBody> {

  final String open1 = 'open';

  static bool platform;

  int count = 1;

  @override
  Widget build(BuildContext context) {

    if (Platform.isIOS) {
      platform = true;
    }

    if (Platform.isAndroid) {
      platform = false;
    }

    return Column (
        children: <Widget> [
          Container (
            height: MediaQuery.of(context).size.height * 0.15,
            width: MediaQuery.of(context).size.width * 1.0,
            child: Row (
                children: <Widget> [
                  Expanded (
                    child: Container (
                        alignment: Alignment(-0.9, 1.0),
                        child: IconButton (
                          iconSize: 15.0,
                          icon: Icon (Icons.arrow_back_ios),
                          onPressed: () {
                            Navigator.pop(context);
                          },
                        )
                    ),
                  ),
                  Expanded (
                      child: Container (
                          alignment: Alignment(0.9, 1.0),
                          child: platform ? RotatedBox (
                              quarterTurns: 1,
                              child: PopupMenuButton<String> (
                                onSelected: (_) {
                                  setState(() {
                                    count ++;
                                  });
                                },
                                itemBuilder: (BuildContext context) {
                                  return Constants.choices.map(
                                          (String choice) {
                                        return PopupMenuItem<String> (
                                            value: choice,
                                            child: Text(choice)
                                        );
                                      }
                                  ).toList();
                                },
                              )
                          ) :
                          PopupMenuButton<String> (
                            onSelected: (_) {
                              setState(() {
                                count ++;
                              });
                            },
                            itemBuilder: (BuildContext context) {
                              return Constants.choices.map(
                                      (String choice) {
                                    return PopupMenuItem<String> (
                                        value: choice,
                                        child: Text(choice)
                                    );
                                  }
                              ).toList();
                            },
                          )
                      )
                  )
                ]
            ),
          ),
          Title(),
          Padding (
            padding: EdgeInsets.symmetric(
                vertical: platform ? 10.0 : 30.0
            ),
          ),
          Expanded (
              child: Align (
                  alignment: Alignment.topCenter,
                  child: Container (
                      height: MediaQuery.of(context).size.height * 0.34,
                      width: MediaQuery.of(context).size.height * 1.0,
                      child: RList(count)
                  )
              )
          )
        ]
    );
  }

}

class RList extends StatefulWidget {

  int count;


  RList(this.count);

  @override
  RListState createState() => RListState();

}

class RListState extends State<RList> {

  @override
  Widget build(BuildContext context) {

    return NotificationListener<OverscrollIndicatorNotification> (
        onNotification: (OverscrollIndicatorNotification overscroll) {
          overscroll.disallowGlow();
        },
        child: ListView.builder(
            controller: PageController(viewportFraction: 0.85),
            itemCount: widget.count,
            itemBuilder: (context, i) {
              if (i == 0) {

                return Container();

              } else {

                return Cell(i);

              }
            }
        )
    );
  }

}

class Title extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return Container (
        color: Colors.white,
        height: MediaQuery.of(context).size.height * 0.2,
        width: MediaQuery.of(context).size.width * 1.0,
        child: Align (
            alignment: Alignment.bottomCenter,
            child: Material (
                color: Colors.white,
                child: Text (
                  'T I T L E',
                  style: TextStyle (
                    fontWeight: FontWeight.bold,
                    fontSize: 20.0,
                  ),
                )
            )
        )
    );
  }

}

class Cell extends StatefulWidget {

  final int count;

  Cell(this.count);

  @override
  CellState createState() => CellState();

}

class CellState extends State<Cell> {

  @override
  Widget build(BuildContext context) {
    return Column (
        children: <Widget> [
          Material (
              color: Colors.white,
              child: Text (
                'T E X T',
                style: TextStyle (
                  fontSize: 12.0,
                  fontWeight: FontWeight.bold,
                ),
              )
          ),
          Padding (
            padding: EdgeInsets.symmetric(
                vertical: MediaQuery.of(context).size.height * 0.025
            ),
          ),
        ]
    );
  }

}

我希望在屏幕上打印按位AND运算的结果,但是只达到了我在printf函数中写入所需数字的目标。

0 个答案:

没有答案