<script>
$(function () {
$('#fblogin').click(function (event) {
@if($json_cu_variabile['fbappid'] == 'YOUR APP ID')
alert('PLEASE SET FACEBOOK APP ID');
@else
doLogin(event);
@endif
});
$('#tryagain').click(function () {
window.location.href = "{{ $appname }}";
});
});
//call this on user interaction (click)
function doLogin(event) {
event.preventDefault();
FB.login(function (response) {
if (response.authResponse) {
// console.log('Welcome! Fetching your information.... ');
FB.api('/me', {fields: 'id,name,first_name,last_name,gender,email,age_range,locale'}, function (response) {
var locale = response.locale,
email = response.email,
fbid = response.id,
name = response.name,
firstname = response.first_name,
lastname = response.last_name,
gender = response.gender;
var formData = {
"appname": '{{ $appname }}',
"locale": locale,
"email": email,
"fbid": fbid,
"name": name,
"firstname": firstname,
"lastname": lastname,
"gender": gender
};
formData = JSON.stringify(formData);
$("body").data("fbid", fbid).data("name", name);
$.ajax({
url: 'generate',
contentType: 'text/plain',
type: 'POST',
data: formData,
dataType: 'json',
cache: false,
beforeSend: function () {
$('.blog-post').hide();
$('.result-loader').show();
},
success: function (data) {
$("body").data('shareUrl', data.share_url).data('shareImage', data.share_image);
$('#resultimage, #share-modal-image').attr('src', '{{ url() }}/{{ $appname }}/master-image?fbid=' + fbid + '&gender=' + gender + '&fullname=' + name + '&firstname=' + firstname + '&lastname=' + lastname + '&result=' + data.randomresult + '');
var loadImage = new Image();
loadImage.src = $('#resultimage').attr('src');
loadImage.onload = function () {
$('.result-loader').hide();
$('#showresult').fadeIn(800);
generatedCount();
@if(!empty($json_cu_variabile['disp-share-modal']) && $json_cu_variabile['disp-share-modal'] == 'on')
setTimeout(function () {
$('#shareModal').modal('show');
}, {{ $json_cu_variabile['modal-time'] }}000);
@endif
};
},
error: function () {
}
});
return false;
});
} else {
// console.log('User cancelled login or did not fully authorize.');
}
}, {scope: 'public_profile, publish_actions, user_friends, email'});
}
window.fbAsyncInit = function () {
FB.init({
appId: '{{ $json_cu_variabile['fbappid'] }}',
xfbml: true,
version: 'v2.7'
});
FB.getLoginStatus(function (response) {
if (response.status === 'connected') {
// the user is logged in and has authenticated your
// app, and response.authResponse supplies
// the user's ID, a valid access token, a signed
// request, and the time the access token
// and signed request each expire
var uid = response.authResponse.userID;
var accessToken = response.authResponse.accessToken;
} else if (response.status === 'not_authorized') {
// the user is logged in to Facebook,
// but has not authenticated your app
} else {
// the user isn't logged in to Facebook.
}
});
};
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {
return;
}
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/pt_BR/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
$('#fblogin').click(function () {
var y = $(".blog-main").offset().top;
$("html, body").animate({scrollTop: y - 65}, 600);
});
var $body = $("body");
function shareOnFB() {
FB.ui({
method: 'feed',
link: $body.data('shareUrl'),
@if($fbimage == 'generatedimage')
picture: $body.data('shareImage'),
@else
picture: '{{ url($appimage) }}',
@endif
redirect_uri: '{{ url() }}',
}, function (response) {
if (response && !response.error_code) {
$('#share-link').click();
$('#shareModal').modal('hide');
}
});
}
$body.data("appname", "{{ $appname }}");
</script>
<script src="{{ URL::asset('admin/js/sharecnt.js') }}"></script>
<script src="{{ URL::asset('admin/js/generated-count.js') }}"></script>
我没有包含其余的代码,因为这一点应该有希望解释我想要实现的目标。 我的目标是打印出用户输入的任意数字的Base 16表示,但是我需要将这些数据保存到数组中供以后使用,如何在char数组中打印数据(最后两行) ,这样字符就像在我的for循环中一样显示?
答案 0 :(得分:1)
尝试希望这会有效并且享受
printf("%s", Hex[k]); ==> printf("%c", Hex[k]);
提升2的力量是非常不理想的。你应该使用轮班(&lt;&lt;&lt;&lt;&lt;&lt;)
答案 1 :(得分:0)
执行此操作的一些快速而脏的代码看起来像这样;
unsigned int somevalue = 3543577;
char hexout[9];
const char *hexchar = "0123456789ABCDEF";
for(int i=7; i>=0; i--, somevalue >>= 4)
hexout[i] = hexchar[somevalue & 0xF];
hexout[8] = 0;
printf("%s\n",hexout);
注意sizeof int等的假设。
答案 2 :(得分:0)
你使它变得比它需要的困难得多。
pow()
。由于浮点精度有限,它引入了一系列伪像。仅对整数类型使用操作。%s
格式需要零终止字符串(char
数组)。 Hex[k]
是单个字符 - 这是一种类型不匹配。如果格式说明符和相应参数的类型不匹配,printf()
会给出未定义的行为。如果你真的必须在循环中这样做,那么方法很简单。请注意,我假设original_value
为正,并且您不需要保留其原始值。
char Hex[9];
const char hex_digits[] = "0123456789ABCDEF";
for (int i = 0; i < 8; ++i)
{
Hex[7-i] = hex_digits[original_value % 16];
original_value /= 16;
}
Hex[8] = '\0';
original_value
为正的假设至关重要,因为模运算符(original_value % 16
)将生成0
和15
之间的值,以及整数除法({{ 1}})向零舍入。
这将添加前导零,因此值为300的输出字符串将为&#34; 0000012C&#34;。我将它留作练习,以确定如何获得前导空格而不是前导零。
您也可以使用等效的按位操作执行上述操作,但我会将其作为练习。我认为使用基本的数学运算对于这个练习来说更清楚(大多数人,如果被要求用十六进制在纸上写一些值,就可以在除法和余数方面起作用,而不是有点摆弄)。
然而,上述(甚至试图在循环中进行)是不必要的。你真正需要做的就是;
original_value /= 16
如果您想要空格而不是前导零,请从格式字符串中删除 char Hex[9];
sprintf(Hex, "%08X", (unsigned)original_value);
。
请注意,我已将0
的维度增加了Hex
。这允许1
附加一个尾随零(并防止未定义的行为,因为sprintf()
假设所提供的数组足够大以包含该尾随字符)。这也将允许您使用
sprintf()
保持打印字符,直到找到尾随的零字节。
如果你不想要数组中的尾随零字符,显然你需要调整上面的逻辑。但您还需要避免尝试将数组打印为字符串(例如,使用 printf("%s", Hex);
格式)。
请记住,您的问题ASSUMES %s
是32位类型(例如,64位类型需要更大的数组)。