如何在javascript中将DEC转换为HEX?

时间:2012-09-06 01:18:42

标签: javascript

我正在尝试使用JavaScript将DEC编号转换为HEX。

我想转换的数字是28。

我尝试过使用:

function h2d(h) {return parseInt(h,16);}

然而它返回40

我也尝试过使用:

function d2h(d) {return d.toString(16);}

然而它返回28

最终结果应该返回1C,但我似乎无法解决。

有谁知道我哪里出错了?

4 个答案:

答案 0 :(得分:20)

听起来你遇到了麻烦,因为当你正在寻找一个数字时你的输入是一个字符串。尝试将d2h()代码更改为如此,您应该设置:

function d2h(d) { return (+d).toString(16); }

加号(+)是强制变量为数字的简写方法。只有Number的toString()方法将采用基数,字符串不会。此外,您的结果将采用小写,因此您可能希望使用toUpperCase()将其强制为大写:

function d2h(d) { return (+d).toString(16).toUpperCase(); }

结果将是:

d2h("28") //is "1C"

答案 1 :(得分:2)

重复问题

(28).toString(16)

你所犯的错误是“28”是一个字符串,而不是一个数字。你应该把它当成一个数字。一般不应该期望语言能够在进行转换之前将字符串解析为整数(好吧......我想在javascript中期望反过来是合理的)。

答案 2 :(得分:0)

写的d2h()应该可以正常工作:

js> var d=28
js> print(d.toString(16))
1c

你是如何测试的?

此外,40是d2h(28)的预期输出,因为十六进制“28”是十进制40。

答案 3 :(得分:0)

class FindInviteScreen extends StatefulWidget {
  static String id = 'find-invite';

  @override
  _FindInviteScreenState createState() => _FindInviteScreenState();
}

class _FindInviteScreenState extends State<FindInviteScreen> {
  @override
  Widget build(BuildContext context) {
    return SafeArea(
      child: Scaffold(
        appBar: AppBarCard(
          title: 'Find & Invite Friends',
          actions: [
            IconButton(icon: Icon(Icons.search_sharp), onPressed: () {
              showSearch(context: context, delegate: Search());
            }),
          ],
        ),
        body: Container(
          child: Text('find'),
        ),
      ),
    );
  }
}

class Search extends SearchDelegate<String> {
  final searchResults = [
    'jaipur',
    'delhi',
    'mumbai',
    'bangalore',
    'kolkata'
  ];

  final recentSearchResults = [
    'jaipur',
    'delhi',
  ];

  @override
  ThemeData appBarTheme(BuildContext context) {
    assert(context != null);
    final ThemeData theme = Theme.of(context);
    assert(theme != null);
    return theme.copyWith(
      inputDecorationTheme: theme.inputDecorationTheme.copyWith(
        contentPadding: EdgeInsets.symmetric(horizontal: 100.0, vertical: 23.0),
      ),
    );
  }

  @override
  List<Widget> buildActions(BuildContext context) {
    // action for app bar
    return [
      IconButton(icon: Icon(Icons.clear), onPressed: () {
        query = '';
      }),
    ];
  }

  @override
  Widget buildLeading(BuildContext context) {
    // leading icon on left of app bar
    return IconButton(icon: AnimatedIcon(icon: AnimatedIcons.menu_arrow, progress: transitionAnimation,), onPressed: () {
      close(context, null);
    });
  }

  @override
  Widget buildResults(BuildContext context) {
    // show some result base on selection
    throw UnimplementedError();
  }

  @override
  Widget buildSuggestions(BuildContext context) {
    // show when someone searches something
    final resultsList = query.isEmpty ? recentSearchResults : searchResults.where((element) => element.startsWith(query)).toList();

    return ListView.builder(itemBuilder: (context, index) => ListTile(
      leading: Icon(Icons.location_city),
      title: Text(resultsList[index]),
    ),
    itemCount: resultsList.length,);
  }
  
}

也可以