我正在尝试使用JavaScript将DEC编号转换为HEX。
我想转换的数字是28。
我尝试过使用:
function h2d(h) {return parseInt(h,16);}
然而它返回40
我也尝试过使用:
function d2h(d) {return d.toString(16);}
然而它返回28
最终结果应该返回1C,但我似乎无法解决。
有谁知道我哪里出错了?
答案 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)
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,);
}
}
也可以