Étant donné qu'un nombre peut également être une décimale, cela me fait penser qu'un numéro CC devrait être un entier. Cela aurait un sens comme je ne pense pas que les cartes de crédit commencent avec 0 et, comme ils suivent tous le même type de motif: P>
44443333222221111 P>
Donc, je suppose qu'ils sont un entier mais je ne suis pas trop sûr de quoi ressemblent les cartes internationales? Faire tout début avec 0? P>
Merci pour toutes vos réponses. Il est moins de les stocker (en fait, je ne fermerais que les 4 derniers chiffres) et plus pour faire un chèque de validation rapide. Quoi qu'il en soit, je vous le traiterais comme un entier pour la validation, c'est-à-dire de s'assurer qu'il est compris entre 13 et 16 chiffres de longueur et toujours jamais une décimale. P>
6 Réponses :
J'imagine qu'ils sont des entiers tels qu'ils (presque certainement) ne contiennent aucun caractère alphabétique et ne présentent jamais de décimales. P>
Mieux vaut utiliser un tableau de Par exemple, P> Ints code>. Souvent, les chiffres individuels sont utilisés dans un type de somme de contrôle pour valider le numéro de carte de crédit. Cela prendrait également soin de l'affaire qu'un numéro CC commence par 0.
int cc = 4321;
Pouvez-vous donner un exemple pour où cela serait nécessaire?
@Thilo: tous types de validation de la somme de contrôle. Google vous en donne beaucoup.
Tout cela serait possible avec un entier ou une corde aussi.
@Thilo: C'est vrai. Cependant, un entier ne serait pas en mesure de stocker des cadres supérieurs et nécessiterait de diviser par 10 ^ n code> pour obtenir le chiffre
nième code>. Les chaînes sont essentiellement des matrices de caractères et constitueraient une option viable, mais elle aurait également besoin de convertir Char_to_int à tout moment, vous souhaitez effectuer une opération mathématique (comme une somme de contrôle).
Les numéros de carte de crédit sont Vous n'allez pas faire de multiplication ou de division sur le numéro CC, il devrait donc s'agir d'une chaîne à mon avis. p> Préfixe rapide, longueur et contrôle des critères de chiffre h2>
7 ans plus tard, la table est toujours impressionnante.
Cette réponse est ancienne, mais je tiens à souligner que si vous stockez un numéro de carte sous forme de Varchar et une décimale dans SQL Server, il existe une énorme différence de stockage. Un varchar (16) prendra 16 octets de stockage vs. 9 octets pour une décimale (16, 0). Évidemment, pour un petit ensemble de données, ce n'est pas une grosse affaire, mais pour 10 millions de millions de numéros de carte, la différence de stockage est significative.
Neuf ans plus tard. Voulez-vous voir si une carte convient à une gamme. Stocker comme un numéro permet plus ou moins que la comparaison
Personnellement, je les stocke toujours comme une chaîne ... c'est une série d'entiers, un peu comme un numéro de téléphone, pas un grand entier lui-même. P>
Une série d'entiers ne serait-elle pas plutôt exprimée par un éventail d'entiers? (Ou éventuellement comme une gamme de caractères, mais pas dans le sens d'une chaîne ASCII)
Techniquement, oui, mais cela me semble plutôt semblable à la surkill ... Dépend si vous essayez d'obtenir une performance de 100% de votre système ou de le rendre plus convivial.
Vous devez souvent travailler avec les valeurs entières réelles lors de la validation des numéros CC. Je trouve donc plus pratique de les stocker comme des entiers tout de suite au lieu de convertir les chiffres en Int avant chaque opération. Mais c'est plus une question de goût.
@ Tommy5Dollar: L'application la plus développée serait d'avoir une classe code> CreditCard Code> avec des interfaces permettant d'accéder aux numéros, plutôt que de nécessiter chaque fonction client d'analyser une chaîne.
aucun numéro de carte de crédit / débit commence par un zéro (probablement en raison de discussions comme celle-ci). P>
Tous les numéros de carte de crédit / débit ont un chiffre de contrôle calculé à l'aide du Algorithme Luhn < / p>
Comme il se trouve, 44443333322221111 code> transmet le test de chiffre de contrôle Luhn. P>
Je ne trouve plus la source, mais j'ai regardé cette question et j'ai constaté que certains numéros de carte de crédit peuvent commencer par un 0.
N'utilisez pas d'entier pour cela. P>
Selon la taille de vos entiers (langue / machine dépendante), ils peuvent être trop volumineux pour stocker comme entiers. P>
L'utilisation de numéros de carte de crédit n'est pas non plus comme des entiers, car il n'y a aucune raison de faire de l'arithmétique avec eux. P>
Vous devez généralement les considérer comme des matrices de chiffres décimaux, ce qui pourrait être plus facilement stocké en tant que chaînes, mais pourrait mériter un tableau réel, en fonction de votre langue de programmation. P>
Ils contiennent également des informations sur l'autorité bancaire codées comme décrit dans L'article Wikipedia sur les numéros de carte bancaire , et sont un cas particulier de
Si vous avez affaire à CC NUMÉRO, pourquoi ne pas regarder l'API que vous êtes interface pour les traiter et utiliser ce format de données?